2012-12-14 17 views
7

ja nie wiem, czy im nadużywania Git, lub jeśli mam problem z konfiguracją, więc każdy klarowność będą mile widziane :)Git branże: śledzenie upstream

I sklonować moje repo GitHub na maszynie A i B , a następnie na maszynie AI temat:

git checkout -b branchA 
// make edits 
git add . 
git commit -am "initial" 
git push 

następnie na maszynie B zrobić

git pull 
git checkout branchA 
// make edits 
git commit -am "edits" 
git push 

na maszynie A ja wtedy zrobić:

git pull 

jednak mówi:

There is no tracking information for the current branch 

więc muszę zrobić:

git branch --set-upstream branchA origin/branchA 

:/Dlaczego muszę ustawić w górę, gdy pierwotnie popchnął go do pochodzenia/branchA bez problemu ?

Co się dzieje? Dzięki

Im za pomocą msygit 1.8. na Windows

P.S. kiedy robię pull na maszynie B, dlaczego nie jest domyślnie śledzony nowy oddział branchA? git branch nie pokazuje tego (ale działa z -r). Mogę zrobić wszystko nowych oddziałów zdalnych być śledzone domyślnie kiedy pull?

+0

Jakie jest wyjście 'git config push.default' w repozytorium? Nie byłoby to "prądem", prawda? – jszakmeister

+0

nie zwraca niczego (na komputerze A):/ –

Odpowiedz

12

od git config push.default niczego nie oznacza to, że powrót z „git 1.8.0.msysgit.0”, twój git push oznacza git push origin :, z refspec ' : "oznacza" dopasowanie "oddziału.

Tutaj tworzy pasujące branchA na zdalnej stronie.

Ale to nie oznacza, że ​​jest to gałąź zdalnego śledzenia.
Innymi słowy, branch.branchA.merge nie jest ustawiony na nic.
Oto dlaczego ciągnięcie git kończy się niepowodzeniem: nie wie, który oddział zdalny ma połączyć się z lokalnym branchA.


Uwaga, Twój pierwszy git push powinien wyświetlany jest następujący komunikat:

warning: push.default is unset; its implicit value is changing in 
Git 2.0 from 'matching' to 'simple'. To squelch this message 
and maintain the current behavior after the default changes, use: 

    git config --global push.default matching 

To squelch this message and adopt the new behavior now, use: 

    git config --global push.default simple 

See 'git help config' and search for 'push.default' for further information. 
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode 
'current' instead of 'simple' if you sometimes use older versions of Git) 

Tak, z Git2.0, że git Push zawiedzie.
Jedynym sposobem, aby pchnąć branchA będzie poprzez ustawienie explicite swój oddział upstream (przy użyciu tej samej nazwy):

git push -u origin branchA 
+0

, co ma sens, dzięki. Czy istnieje ustawienie konfiguracyjne zapobiegające temu zachowaniu (tzn. Czy 'git push' /' git push origin: 'tworzysz zdalną gałąź śledzącą?) Lub czy zawsze muszę' push -u'? –

+0

@AndrewBullock powinieneś użyć '-u' dla pierwszego naciśnięcia. Po tym nie potrzebujesz tego.Również ustawienie domyślnego trybu wypychania na prostą pomoc w egzekwowaniu tej zależności między lokalną gałęzią a zdalną gałęzią śledzenia. – VonC

+0

@AndrewBullock mówi, że tryb upstream może ci w tym pomóc, jeśli nie chcesz jawnie używać '-u': zobacz http://stackoverflow.com/a/13751847/6309 – VonC

Powiązane problemy