Jaka jest różnica między „gałęzią git” a „git checkout -b”?

Odpowiedzi:

259

git checkout -b BRANCH_NAMEtworzy nową gałąź i sprawdza nową gałąź, jednocześnie git branch BRANCH_NAMEtworząc nową gałąź, ale pozostawiając cię w tej samej gałęzi.

Innymi słowy, git checkout -b BRANCH_NAMEczy dla ciebie następujące rzeczy.

git branch BRANCH_NAME    # create a new branch
git checkout BRANCH_NAME  # then switch to the new branch
Fatih Acet
źródło
44

git branch tworzy gałąź, ale pozostajesz w bieżącej gałęzi, którą wypisałeś.

git checkout -b tworzy gałąź i sprawdza ją.

Można to uznać za krótką formę:

git branch name
git checkout name
manojlds
źródło
Powiedzmy raczej: „gałąź git tworzy gałąź, ale pozostajesz w bieżącej gałęzi, OD KTÓREJ wypisałeś”.
Akash Verma
28
  • git branch: Pokazuje wszystkie twoje gałęzie
  • git branch newbranch: Tworzy nowy oddział
  • git checkout -b newbranch: Tworzy nową gałąź i natychmiast przełącza się na tę gałąź. To jest to samo, co git branch newbranchnastępuje git checkout newbranch.
Michel Pereira
źródło
24

Pełna składnia:

git checkout -b [NEW_BRANCH] [FROM_BRANCH]

[FROM_BRANCH] jest opcjonalny. Jeśli nie ma FROM_BRANCH, git użyje bieżącej gałęzi.

Tuong Le
źródło
7

Jest jeszcze jedna flaga, o której należy wspomnieć.

git checkout -B BRANCH_NAME

To bardzo przydatne polecenie, którego ostatnio używałem. To polecenie sprawdza wybraną gałąź i resetuje gałąź na podstawie gałęzi źródłowej.

ddavison
źródło
2
Czy możesz to bardziej wyjaśnić? Nie wiem, co oznacza reset dla git
Mikaël Mayer
3
Z instrukcji na git:If -B is given, <new_branch> is created if it doesn't exist; otherwise, it is reset. This is the transactional equivalent of $ git branch -f <branch> [<start point>] $ git checkout <branch>
ddavison
Masz na myśli, że możesz ponownie wykorzystać istniejący oddział?
Mikaël Mayer
1
Czy checkout -Bniebezpieczne jest, jeśli gałąź, do której się przełączasz, jest udostępniana innym? Użyłem tego niedawno i wydawało się, że automatycznie łączy zmiany w mojej drugiej gałęzi z gałęzią, do której się przestawiłem.
Jeff
jeśli pobierzesz inną gałąź programistów zdalnie i zrobisz git checkout -Bwtedy tak, to połączy się, a może nawet zastąpi
ddavison
-1

Istnieją formy obu poleceń, które są podobne (patrz dokumentacja git-scm w wersji 2.11.1):

git branch <branchname> <start-point>

i

git checkout -b <new_branch> <start_point>

Ten ostatni wykonuje najpierw polecenie rozgałęzienia, a następnie dodaje kasę. W tej formie wyraźne odniesienia do dokumentu git-branch:

Podanie -b powoduje utworzenie nowej gałęzi, tak jakby wywołano git-branch [2], a następnie wyewidencjonowano

Pshemy108
źródło
1
Nie dodaje to żadnych nowych informacji w stosunku do przyjętej odpowiedzi z 2011 r.
melpomene
W rzeczywistości dodaje nowe informacje o <start-point>. Które osobiście uznałem za przydatne do tworzenia rozgałęzień na innym obiekcie znajdującym się w innym miejscu bez konieczności wcześniejszego sprawdzania obiektu lub przesunięcia bieżącej gałęzi. Używanie notacji jako [FROM_BRANCH], gdy tak naprawdę jest to git-referencja, nie jest moim zdaniem przydatne.
Pshemy108,
Opcjonalny drugi argument nie ma znaczenia dla pytania. To samo dotyczy obu poleceń, a OP poprosił o różnicę. (Jeśli naprawdę uważasz, że jest to niezbędne, po prostu dodałbym komentarz do zaakceptowanej odpowiedzi.)
melpomene
-1

Głównie :

Gałąź A-git pozwala stworzyć gałąź prostą i prostą.

B -git Checkout -b umożliwia utworzenie gałęzi i przełączanie się na nią w tym samym czasie.

Kiedy wykorzystasz który? 1- gałąź git, jeśli chcesz utworzyć gałąź, ale pozostań na bieżącej gałęzi. 2-git kasa -b, gdy chcesz utworzyć i przełączyć. Jeśli spojrzysz na to, intuicyjne jest utworzenie gałęzi i przejście do niej. Więc wybór należy do ciebie :)

użytkownik2238769
źródło
4
Nie dodaje to żadnych nowych informacji w stosunku do zaakceptowanej odpowiedzi z 2011 roku.
melpomene