2013-06-06 12 views
20

Wszystko jest w tytule ...Dlaczego "git status" nie wyświetla nieprzerwanego zatwierdzenia w oddziale?

czytam to pytanie: Viewing Unpushed Git Commits

Ale ja nie rozumiem, dlaczego git status wyświetla wszystkie unpushed zobowiązuje się w gałęzi master, ale nie ma nic w innych gałęziach wyświetlić.

Czy ktoś może to wyjaśnić?

EDIT

Oto co nakazuje i wyjścia zrobiłem/dostać:

[email protected]:/home/repo/$ git branch 
    new_feature 
* master 

[email protected]:/home/repo/$ git checkout new_feature 
Switched to branch 'new_feature' 

[email protected]:/home/repo/$ echo test > newfile.txt 
[email protected]:/home/repo/$ git add newfile.txt 
[email protected]:/home/repo/$ git commit -m "Test commit" 
[new_feature 51c6a64] Test commit 
1 file added 
[email protected]:/home/repo/$ git status 
# On branch new_feature 
nothing added to commit 

Dlaczego nie mój popełnić pojawić podczas korzystania git status?

+0

możliwy duplikat [Jak czy tworzysz istniejący oddział Git na oddziale zdalnym?] (http://stackoverflow.com/questions/520650/how-do-you-make-an-existing-git-branch-track-a-remote-branch) – arnorhs

+3

@arnorhs, jesteś technicznie poprawny, ale przypuszczam, że OP nie był świadomy wszystkich tych maszyn gałęzi śledzenia, więc nie mają szansy na znalezienie tego pytania. Dlatego nie głosowałbym, aby zamknąć odpowiedź. – kostix

+0

fajne. Ma to sens dla mnie. Mogę również wyobrazić sobie, że ludzie próbują znaleźć google w pytaniu sformułowanym w podobny sposób jak w pytaniu OP, jeśli nie znają poprawnego terminu git dla śledzenia. Trudno dostać się do gita z całym żargonem. – arnorhs

Odpowiedz

20

Powód jest taki, że gałąź główna ma w rzeczywistości gałąź zdalną, na początku/w jednostce głównej, do której skonfigurowano oddział do śledzenia.

Oznacza to, że za każdym razem, gdy wykonasz zatwierdzenie, a następnie wykonasz polecenie git status, zobaczysz, które zatwierdzenia różnią się między lokalnym oddziałem a zdalnym oddziałem.

Po utworzeniu nowej gałęzi domyślnie nie ma odpowiadającej jej gałęzi zdalnej. Możesz to zobaczyć wykonując git branch -a. które pokaże Ci wszystkie zdalne gałęzie, które są skonfigurowane.

Więc są dwie rzeczy w grze:

1) Nie masz zdalny oddział dla lokalnego oddziału 2) Twój oddział nie jest skonfigurowany do śledzenia zmian z odległego oddziału

Jeden prosty sposób na zdalną gałąź i skonfigurować śledzenie lokalnego oddziału, to naciskać na lokalnym oddziałem do odległego oddziału:

git checkout new_feature 
git push -u origin new_feature 

Normalnie, kiedy po prostu wcisnąć bez przełącznika -u nie tropi b Założę, ale twoja gałąź nadal będzie pchana. Ale kiedy przejdziesz w przełączniku -u, powiesz git, że chcesz także ustawić oddział, aby śledził zmiany z oddziału zdalnego.

Po wykonaniu tej czynności, a następnie dokonać zmian i zobowiązać je, a następnie zrobić git status dostaniesz oczekiwany rezultat „Twój oddział jest głowica pochodzenia/new_feature o 1 popełnić”

+0

Próbowałem tego co zasugerowałeś: git branch -u origin/my_other_branch i dostałem w zamian: error: unknown switch 'u' ... – Aurelien

+0

ah, starsza wersja git.Będę edytować moją odpowiedź – arnorhs

+0

Znalazłem również zduplikowane pytanie, które dodałem do flagi dla – arnorhs

Powiązane problemy