2013-06-27 16 views
15

Brak zdalnego repozytorium, tylko jedno lokalne repozytorium z dwoma oddziałami.Różnica między ciągiem git. master vs git merge master

$ git branch -a 
    master 
* devel 

naśladują polecenia w tym kontekście samo/synonim?

$ git pull . master 

i

$ git merge master 

UPDATE:

$ git help pull daje następujące informacje

SYNOPSIS 
    git pull <options> <repository> <refspec>... 

DESCRIPTION 
    ... 
    Note that you can use . (current directory) as the <repository> to pull 
    from the local repository — this is useful when merging local branches 
    into the current branch. 

ja naprawdę nie rozumiem, dlaczego to jest przydatne, jak wspomniano w tym podręcznika.

+1

bez git-merge - Połącz ze sobą dwie lub więcej historii rozwoju. I git-pull - Pobierz z i połącz z innym repozytorium lub lokalnym oddziałem. – cptnk

Odpowiedz

8

git pull . master pobiera od bieżącego repozytorium (no-op), a następnie zrobić coś wnieść aktualną gałąź na bieżąco z master. To coś może być scaleniem, ale może to być także rebase w zależności od ustawienia konfiguracyjnego pull.rebase lub branch.master.rebase.

W przypadku scalenia strategia scalania, na którą ma wpływ pull.twohead.

git merge master będzie zawsze scalać wzorzec z domyślną strategią scalania.

11

pull to komenda łączona, fetch, po której następuje merge. Przy domyślnych lub rozsądnych parametrach synchronizuje twoją bieżącą gałąź.

Przy takich parametrach większość pracy jest sabotowana. część pobierania zostanie anulowana, aby użyć bieżącego repozytorium, więc zostanie pominięta, a użytkownik jawnie poprosi o nadpisanie wzorca FETCH_HEAD.

Tak więc w tej formie uważam, że są one identyczne (i ja też umieściłem pierwszą w kategorii nonsensu).

+0

To będzie tak samo, ponieważ pilot jest ".", Nie? – jszakmeister

+0

jak wskazałem, nie ma zdalnego repozytorium. więc 'fetch' nic nie robi. Czy potrafisz dostosować swoją odpowiedź; Cieszę się, że wspomniałem, że zazwyczaj git pull jest odpowiednikiem git fetch & git merge. – Hotschke

2

Jedyna różnica - w drugim przypadku (git merge master) zostanie scalone z danymi nie świeżymi, ale z danymi z ostatniej zdalnej aktualizacji. Tak więc, jeśli po prostu wykonałeś fetch (lub git remote update) - działają one w ten sam sposób, ale jeśli zaktualizowałeś lokalne repozytorium dawno temu - to połączy się ze starą migawką.

Nie jestem pewien okres w git pull . master jest poprawnym składnie ...

+0

to również mnie zdziwiło, ale wygląda na to, że pomijam część pobierania –

Powiązane problemy