2011-06-19 14 views
6

Jestem pewien, że brakuje mi czegoś fundamentalnego, ale dostałem kroplę aplikacji przechowywanej w repozytorium git. Ma foldery takie jak: gałęzie, haki, obiekty itp., Ale nie ma rzeczywistych plików źródłowych.Uzyskiwanie dostępu do plików źródłowych z git BARE: master

Kiedy otwieram git bash i cd w tym folderze, tytuł mówi "(BARE: master)".

Zakładam, że potrzebuję po prostu sklonować lokalny skarbnik z tego folderu. Ostatecznie po prostu potrzebuję dostępu do rzeczywistych plików źródłowych w repozytorium, ale na pewno brakuje mi jakiejś koncepcji, ponieważ jestem trochę nowy w git.

Wszelkie wskazówki lub pomoc dotycząca tego, jak mogę uzyskać tę lokalną konfigurację, będą mile widziane.

edit: gdy próbuję sklonować z tego katalogu otrzymuję następujący błąd

$ git clone c:/Users/Joel/Dropbox/TheProjectDirectory.git 
Cloning into LocalProjectFolder ... 
fatal: 'c:/Users/Joel/Dropbox/TheProjectDirectory.git' does not appear to be a git 
repository 

fatal: The remote end hung up unexpectedly 
+0

Czy możesz dać nam więcej informacji? Czy jest to twoje lokalne repozytorium bez żadnych pilotów? Lub sklonowałeś go z jakiegoś adresu URL, takiego jak serwer firmy lub github czy cokolwiek innego? Ciężko ci udzielić użytecznych porad bez powtórnego wypowiedzenia połowy książki o Git, kiedy nie wiemy, co próbujesz zrobić z git ... –

+0

zrozumiano, musisz mi wybaczyć, bo jestem nowy trudno powiedzieć, co jest ważna informacja. Katalog został mi udostępniony jako udostępniony folder DropBox. Nie sklonowałem niczego samemu, po prostu przyjąłem folder współdzielonych skrzynek pocztowych i teraz próbuję uzyskać dostęp do plików źródłowych. –

+0

Wtedy jest całkowicie ok, że folder udostępniony jest pusty. Spróbuję wyjaśnić, co się tutaj dzieje za chwilę, jak edytuję moją odpowiedź ... –

Odpowiedz

13

Jest goły repozytorium, co masz.

Najprostszym sposobem, aby dostać się do źródła sklonować go poprzez git clone /path/to/your/bare/rep

gołej repozytoriach jest coś takiego jak wspólne repozytorium, gdzie praca z kilkoma deweloperami się zebrało. W przypadku pudełka dewelopera najprawdopodobniej chcesz go mieć.

Istnieje chapter o repozytoriach klonowania.

EDIT: Tak, mam repozytorium git na moim polu. Więc spróbuję naśladować twoją sytuację. Po pierwsze ja sklonować mojego repozytorium jako gołą jednym:

[email protected] /d/test 
$ git clone --bare /d/work/gittesting/ bare.git 
Cloning into bare repository bare.git... 
done. 

[email protected] /d/test 
$ cd bare.git/ 

[email protected] /d/test/bare.git (BARE:master) 

Więc tutaj mam bare.git repozytorium jak masz swój folder udostępniony. Teraz będę sklonować go mieć jakiś katalog roboczy z rzeczywistych źródeł:

[email protected] /d/test/bare.git (BARE:master) 
$ cd .. 

[email protected] /d/test 
$ git clone bare.git/ my-non-bare-dev-rep 
Cloning into my-non-bare-dev-rep... 
done. 

[email protected] /d/test 
$ cd my-non-bare-dev-rep/ 

[email protected] /d/test/my-non-bare-dev-rep (master) 

teraz mam folderu my-non-bare-dev-rep i wszystkie pliki z repozytorium istnieją. To kopia robocza. Ciąg (master) jest wskazówką dla ciebie, że jesteś teraz w gałęzi master.

Potem będę emulować niektóre prace w mojej kopii roboczej.

[email protected] /d/test/my-non-bare-dev-rep (master) 
$ echo 'my new text' > text-file.txt 

Chcę zobaczyć zmiany mam w kopii roboczej w porównaniu z wersją dostałam od wspólnego Czeska:

[email protected] /d/test/my-non-bare-dev-rep (master) 
$ git status 
# On branch master 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  text-file.txt 
nothing added to commit but untracked files present (use "git add" to track) 

Teraz dodam ten plik tekstowy do tzw obszar etap (lub czasami nazywa się indeks). Jest to termin opisujący zestaw zmian, które zostaną zatwierdzone po wykonaniu polecenia git commit.

[email protected] /d/test/my-non-bare-dev-rep (master) 
$ git add text-file.txt 

Teraz plik text-file.txt znajduje się w obszarze sceny. Ale nadal nie jest popełnione. Nadszedł czas, aby to zrobić:

[email protected] /d/test/my-non-bare-dev-rep (master) 
$ git commit -m 'my commit from dev repo' 
[master c0b0bd8] my commit from dev repo 
1 files changed, 1 insertions(+), 0 deletions(-) 
create mode 100644 text-file.txt 

So. Teraz jest przechowywany w moim lokalnym repozytorium. W rzeczywistości w folderze .git.Ale nadal nie udaje się udostępnić repo, tak aby moi współpracownicy również to widzieli. Do tego muszę zrobić push:

[email protected] /d/test/my-non-bare-dev-rep (master) 
$ git push origin 
Counting objects: 4, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (2/2), done. 
Writing objects: 100% (3/3), 290 bytes, done. 
Total 3 (delta 1), reused 0 (delta 0) 
Unpacking objects: 100% (3/3), done. 
To d:/test/bare.git/ 
    d01886b..c0b0bd8 master -> master 

origin to standardowa nazwa git daje do rodzica, kiedy zrobił klona. Tak jak klonowałem z bare.git - moje zmiany właśnie tam poszły. I wreszcie, aby uzyskać aktualizacje z udostępnionego folderu na lokalnym repozytorium trzeba wykonać pull polecenie:

[email protected] /d/test/my-non-bare-dev-rep (master) 
$ git pull 
Already up-to-date. 

nie mam żadnych zmian przekazywane do bare.git z innych miejsc, więc mój lokalny przedstawiciel jest w górę spotykać się z kimś. I git mi to powiedział.

+0

kiedy próbuję tego, otrzymuję błąd, który zauważyłem powyżej (zredagowałem pytanie) –

+0

@Ivan Wielki wysiłek w wyjaśnianiu takiej długości ... Bravo !!! –

4

Zastosowanie

git clone /c/some/dir.git 

W git bash. C: ścieżki typu nie są dobrze obsługiwane.

Powiązane problemy