2009-09-30 14 views

Odpowiedz

4

Git nie ma pojęcia pobierania pojedynczego pliku. Zawsze przenosi zatwierdzenia w całej sieci.

Po wykonaniu jakiegoś zdalnego repozytorium można , aby najnowsze wersje plików w oddziale zostały wyewidencjonowane w kopii roboczej. Jeśli chcesz je zmodyfikować, powinieneś git checkout -b <yourbranchname> remotename/branch uruchomić oddział lokalny. Może to być lepiej wykonane, ponieważ lokalny oddział będzie "śledził" gałąź zdalną i domyślnie będzie naciskał i ciągnie z tej gałęzi.

15

Po pierwsze, uwaga: zdalne repozytorium może mieć więcej niż jeden oddział; również HEAD oznacza (dla lokalnego rozwoju i lokalnych oddziałów) obecnie wyrejestrowany oddział, a dla zdalnego oddział zdalnego śledzenia (symboliczne odniesienie) remote/HEAD oznacza domyślną gałąź na zdalnym. Nie ma czegoś takiego jak "HEAD of branch"; HEAD jest wskaźnikiem do gałęzi (lub czasem do zatwierdzenia).

Po drugie, Git działa (jako Novelocrat wrote) na poziomie całego drzewa (wszystkie pliki w repozytorium). W Git ty kasie oddziału (chociaż możesz sprawdzić wersję pliku z jakiejś gałęzi do katalogu roboczego, to jest mniej operacji komunikacyjnej).


W Git możesz utworzyć nowe zatwierdzenie tylko nad jakimś oddziałem lokalnym. Nie możesz tworzyć commitów bezpośrednio w gałęziach śledzenia zdalnego, ponieważ mają one śledzić gałęzie zdalnego repozytorium (a stracisz pracę przy pobieraniu).

Dlatego proste „git checkout origin” (przy założeniu, że zdalny nazywa origin), co jest skrótem „git checkout origin/HEAD”, który jest zwykle „git checkout origin/master” będzie kasy stanu zdalnego śledzenia gałęzi do bezimiennego gałęzi tzw indywidualny GŁOWA. Jest to dobre rozwiązanie, jeśli chcesz tylko przeglądać/przeglądać stan gałęzi śledzenia zdalnego.

Jeśli używasz „git checkout --track origin/master” stworzyłoby lokalnym oddziałem master, które mają za zadanie następująco (utworu) zdalnego śledzenia oddziałorigin/master. Zauważ, że git-clone automatycznie ustawia taki lokalny oddział (zwykle master) dla domyślnego odgałęzienia (origin/HEAD) zdalnego origin (zwykle origin/master), więc nie musiałbyś tego robić. Wtedy prosty "git pull", gdy na gałęzi master będzie pobierać (w razie potrzeby), i spróbuj scalić lokalne zmiany ze zmianami w odpowiedniej gałęzi w zdalnym repozytorium. Jeśli nie ma zmian w zdalnym, jest on "aktualny", a lokalny oddział nie ulegnie zmianie; jeśli nie było żadnych zmian w lokalnym oddziale, ale w odległych lokalizacjach, oddział lokalny jest po prostu zaawansowany do stanu odległego oddziału śledzenia, który nazywa się "fast-forward". Możesz tu wpisać "git pull" jako bardzo, bardzo przybliżony odpowiednik "svn update".

Możesz także zmusić lokalny oddział do przeniesienia do stanu oddziału zdalnego śledzenia z "git reset --hard origin".Zauważ, że --hard oznacza tutaj wymuszenie nadpisania katalogu roboczego, więc wszelkie niezaakceptowane zmiany zostaną utracone! Używaj ostrożnie.

Na koniec, jeśli chcesz sprawdzić pojedynczy plik z gałęzi zdalnego śledzenia (tj. Mieć w wersji roboczej pliku jak jest w gałęzi śledzenia zdalnego), możesz po prostu użyć formularza "pathspec" git-checkout, a mianowicie "git checkout origin -- file". Jeśli chcesz zobaczyć, jak plik wygląda w zdalnym oddziale śledzenia, użyj "git show origin:path/to/file".

HTH

Powiązane problemy