2011-01-30 15 views
8
git version 1.7.3.5 

Mam następujące oddziały:aktualizujące branże wykorzystujące git ciągnąć

git branch 
    image 
    master 
* video 

Zrobiłem trochę pracy w biurze. A kiedy wróciłem do domu, zawsze aktualizuję notatnik mojego domu.

Jednak kiedy zrobiłem git remote show origin uzyskać następujące:

Local refs configured for 'git push': 
    image pushes to image (up to date) 
    master pushes to master (fast-forwardable) 
    video pushes to video (local out of date) 

Więc zrobiłem ciągnąć git dla wszystkich tych oddziałów:

git pull origin image 
git pull origin master 
git pull origin video 

Kiedy zrobić git status na wideo i obraz oddział uzyskać:

nothing to commit (working directory clean) 

Kiedy zrobić git status na gałęzi głównej uzyskać:

Your branch is ahead of 'origin/master' by 5 commits. 

Który Nie rozumiem następujące (fast-forwardable) i (local out of date)?

Ale w statusie git dla wideo mówi, że jest aktualny?

Czy muszę przesunąć mojego mistrza, jeśli jest on przedni o 5 uderzeń?

Wielkie dzięki za wszelkie sugestie

+2

prowadzony dziennik 'git --stat --pretty = format: '% Cred% H% Creset -% s% Cgreen (% Cr)% Creset' --abbrev-commit --date = relative origin/master..master', aby uzyskać wrażenie na temat różnicy. '(fast-forwardable)' oznacza, że ​​można bezpiecznie pchać: gałęzie mają te same zatwierdzenia poza jednym odgałęzieniem ('local' w twoich przypadkach) ma kilka dodatkowych zatwierdzeń na górze. – jfs

Odpowiedz

14

git remote show origin porównuje się z lokalnym repozytorium z pilota:

  • fast-forwardable oznacza, że ​​można wcisnąć swoje lokalne zmiany do odległego oddziału.
  • local out of date oznacza, że ​​lokalny oddział znajduje się za oddziałem zdalnym i należy z niego wyciągnąć.

git status porównuje twój lokalny katalog roboczy z bieżącym zatwierdzeniem bieżącego oddziału (aka HEAD). Dodatkowo porównuje się z lokalnym oddziałem z (lokalnej!) Kopii śledzenia zdalnej gałęzi (origin/master), stąd Your branch is ahead of 'origin/master' by 5 commits.

Aby rozwiązać rozbieżności między git status (który pokazuje tylko dane lokalne) oraz git remote show origin (co pokazuje „na żywo” dane zdalne) należy uruchomić git remote update origin, która zaktualizuje lokalne gałęzie śledzenia. Zostanie zaktualizowany lokalny origin/master do stanu zdalnego master. Po tym git status powinny dać ci coś takiego Your branch is behind 'origin/master' by X commits, and can be fast-forwarded.

+0

Jeśli otrzymam komunikat "Twój oddział znajduje się za" origin/master "przez X, to można go szybko przekazać." Co zrobić? Z góry dziękuję. – MikeSchinkel

+1

Użyj 'git pull origin master', aby otrzymać lokalny' master' na bieżąco. – Koraktor

+0

Dzięki za odpowiedź! – MikeSchinkel

Powiązane problemy