2014-09-30 15 views
9

za przejście do bitbucket.różnica między origin/nazwa_gałęzia a nazwa_grupy?

Jeśli to zrobię: git push origin origin/branch_name moje zatwierdzenia nie zostaną przekazane.

Total 0 (delta 0), reused 0 (delta 0) 

Jeśli robię git push origin branch_name moi commity są wypychane:

Counting objects: 160, done. 
Delta compression using up to 8 threads. 
Compressing objects: 100% (13/13), done. 
Writing objects: 100% (20/20), 2.10 KiB | 0 bytes/s, done. 
Total 20 (delta 6), reused 0 (delta 0) 

więc jakie jest pochodzenie/myśli przed branch_name? I dlaczego to ma znaczenie?

Odpowiedz

15

Trzeba pamiętać, że istnieją różne rodzaje oddziałów:

  • (czysto) lokalnych oddziałów, czyli branże zdecydują się,
  • Oddziały znajdujące się w zdalnym repozytorium, z powodu braku lepszego terminu. Możliwe, że znasz zdalne repozytorium pod zdalną nazwą, na przykład origin. Z punktu widzenia tego repozytorium taka gałąź jest jednak lokalna. Witamy w kontroli wersji rozproszonej! :)
  • Zdalne śledzenie oddziałów. Również po prostu nazywa się zdalnych gałęzi, jak w Pro Git book, ale uważam, że to wyrażenie mylące; gałąź zdalnego śledzenia jest dokładniejsza. Są to specjalne lokalne oddziały, których jedynym celem jest odzwierciedlenie stanu oddziałów , które znajdują się w zdalnym repozytorium w czasie ostatniej komunikacji z serwerem. W szczególności nie można zatwierdzać oddziałów tego typu.

Tutaj branch_name jest lokalny gałąź, natomiast origin/branch_name jest zdalnego śledzenia oddział; odzwierciedla stan odpowiedniego oddziału , który żyje w origin.

Right po uruchomieniu

git fetch 

zdalnego śledzenia oddział origin/master a odpowiadający gałęzi, które żyją w origin powinny być idealnie zsynchronizowane.To nie powinno być zaskoczeniem, a potem, że

git push origin origin/branch_name 

nie naciskać niczego: jesteś zasadniczo próbuje wcisnąć rzeczy, które są już obecne w przodkach odpowiedniego gałęzi, które żyją w origin.

Jeśli jednak lokalny gałąź, branch_name, jest przed jednym lub większą liczbą zatwierdzeń,

enter image description here

następnie uruchomiony

git push origin branch_name 

będzie apelować zobowiązuje zawartych w branch_name ale nie w gałęzi , która zawiera: origin:

enter image description here

0

pochodzenie jest co jest przechowywany zdalnie na github

bez pochodzenia, co jest przechowywane lokalnie na komputerze

podczas popełniania 1st jesteś popełnienia lokalnie na komputerze

po naciśnięciu pochodzenie nazwy oddziału Ci pchają do github

+2

Skąd bierze się github? 'git' pozwala na wiele zdalnych serwerów, a github to tylko jeden z nich. –

0
  • origin/branch_name jest oddziałem na zdalnej maszynie
  • tylko branch_name jest oddziałem na lokalnej maszynie
2

użyciu przeglądarka graficzna drzewa (jak gitk --all) pokaże, że origin/mybranch i mybranch mogą się różnić.

origin jest tylko nazwa domyślny na sklonowany zdalnego, która (w danym przypadku) zawiera oddział mybranch (tak jak w lokalnym repozytorium)

więc gdy pytasz naciskać origin/mybranch do origin, synchronizujesz pilota origin z samym sobą, więc nie robi nic (na szczęście zdalny zdalny jest zawsze zsynchronizowany z samym sobą).

Nazwa origin jest arbitralna i mogła zostać ustawiona przy pomocy flagi --origin podczas klonowania.