Szukaj…


Składnia

  • git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
  • git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
  • git branch --unset-upstream [<branchname>]
  • git branch (-m | -M) [<oldbranch>] <newbranch>
  • git branch (-d | -D) [-r] <branchname>…​
  • git branch --edit-description [<branchname>]
  • git branch [--color[=<when>] | --no-color] [-r | -a] [--list] [-v [--abbrev=<length> | --no-abbrev]] [--column[=<options>] | --no-column] [(--merged | --no-merged | --contains) [<commit>]] [--sort=<key>] [--points-at <object>] [<pattern>…​]

Parametry

Parametr Detale
-d, --delete Usuń gałąź. Gałąź musi być w pełni połączona w swoim odgałęzieniu wyższym lub w HEAD jeśli nie ustawiono --track pomocą opcji --track lub --set-upstream
-RE Skrót do --delete --force
-m, --move Przenieś / zmień nazwę gałęzi i odpowiedniego dziennika
-M Skrót do --move --force
-r, --remotes Wyświetl lub usuń (jeśli używasz z -d) gałęzie zdalnego śledzenia
-a, --all Wymień zarówno oddziały zdalnego śledzenia, jak i oddziały lokalne
--lista Aktywuj tryb listy. git branch <pattern> spróbuje utworzyć gałąź, użyj git branch --list <pattern> aby wyświetlić listę pasujących gałęzi
--set-upstream Jeśli określona gałąź jeszcze nie istnieje lub podano --force , działa dokładnie tak samo jak --track . W przeciwnym razie konfiguruje konfigurację, taką jak --track zrobiłby podczas tworzenia gałęzi, z wyjątkiem sytuacji, gdy gałąź, na którą wskazuje gałąź, nie jest zmieniana

Uwagi

Każde repozytorium git ma jedną lub więcej gałęzi . Gałąź jest nazwanym odniesieniem do HEAD sekwencji zatwierdzeń.

Repozytorium git ma bieżącą gałąź (oznaczoną * na liście nazw gałęzi wydrukowanej przez komendę git branch ). Za każdym razem, gdy tworzysz nowe zatwierdzenie za pomocą polecenia git commit , nowe zatwierdzenie staje się HEAD bieżącej gałęzi i poprzedni HEAD staje się rodzicem nowego zatwierdzenia.

Nowa gałąź będzie miała tę samą HEAD co gałąź, z której została utworzona, dopóki coś nie zostanie przypisane do nowej gałęzi.

Wykaz oddziałów

Git udostępnia wiele poleceń do wyświetlania gałęzi. Wszystkie polecenia używają funkcji git branch , która wyświetli listę niektórych gałęzi, w zależności od opcji umieszczonych w linii poleceń. Git w miarę możliwości wskaże aktualnie wybraną gałąź z gwiazdą obok niej.

Cel Komenda
Lista lokalnych oddziałów git branch
Wyświetlaj pełne oddziały lokalne git branch -v
Lista zdalnych i lokalnych oddziałów git branch -a LUB git branch --all
Lista zdalnych i lokalnych oddziałów (pełne) git branch -av
Lista zdalnych oddziałów git branch -r
Lista zdalnych gałęzi z najnowszym zatwierdzeniem git branch -rv
Lista połączonych oddziałów git branch --merged
Lista nie połączonych gałęzi git branch --no-merged
Lista gałęzi zawierających zatwierdzenie git branch --contains [<commit>]

Uwagi :

  • Dodanie dodatkowego v do -v np. $ git branch -avv lub $ git branch -vv , wypisze również nazwę gałęzi upstream.
  • Gałęzie pokazane na czerwono to odległe gałęzie

Tworzenie i sprawdzanie nowych oddziałów

Aby utworzyć nowy oddział, pozostając w bieżącym oddziale, użyj:

git branch <name>

Zasadniczo nazwa oddziału nie może zawierać spacji i podlega innym wymienionym tutaj specyfikacjom. Aby przejść do istniejącego oddziału:

git checkout <name>

Aby utworzyć nowy oddział i przejść do niego:

git checkout -b <name>

Aby utworzyć gałąź w punkcie innym niż ostatni zatwierdzenie bieżącej gałęzi (znanej również jako HEAD), użyj jednego z następujących poleceń:

git branch <name> [<start-point>]
git checkout -b <name> [<start-point>]

<start-point> może być dowolną wersją znaną git (np. Inną nazwę gałęzi, zatwierdzenie SHA lub odwołanie symboliczne, takie jak HEAD lub nazwa znacznika):

git checkout -b <name> some_other_branch
git checkout -b <name> af295
git checkout -b <name> HEAD~5
git checkout -b <name> v1.0.5

Aby utworzyć gałąź ze zdalnej gałęzi (domyślna <remote_name> to origin):

git branch <name> <remote_name>/<branch_name>
git checkout -b <name> <remote_name>/<branch_name>

Jeśli dana nazwa oddziału znajduje się tylko na jednym pilocie, możesz po prostu użyć

git checkout -b <branch_name>

co jest równoważne z

git checkout -b <branch_name> <remote_name>/<branch_name>

Czasami może być konieczne przeniesienie kilku ostatnich zatwierdzeń do nowego oddziału. Można to osiągnąć przez rozgałęzienie i „wycofanie”, w następujący sposób:

git branch <new_name>
git reset --hard HEAD~2 # Go back 2 commits, you will lose uncommitted work.
git checkout <new_name>

Oto przykładowe wyjaśnienie tej techniki:

 Initial state       After git branch <new_name>    After git reset --hard HEAD~2
                             newBranch                        newBranch
                                 ↓                                ↓
A-B-C-D-E (HEAD)         A-B-C-D-E (HEAD)                 A-B-C-D-E (HEAD)
        ↑                        ↑                            ↑
      master                   master                       master

Usuń oddział lokalnie

$ git branch -d dev

Usuwa gałąź o nazwie dev jeśli jej zmiany zostaną scalone z inną gałęzią i nie zostaną utracone. Jeśli dev oddział nie zawiera zmian, które jeszcze nie zostały scalone, które zostałyby utracone, git branch -d nie powiedzie się:

$ git branch -d dev
error: The branch 'dev' is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev'.

Zgodnie z komunikatem ostrzegawczym możesz wymusić usunięcie gałęzi (i utracić wszelkie nie połączone zmiany w tej gałęzi) za pomocą flagi -D :

$ git branch -D dev

Sprawdź nowy oddział śledzący oddział zdalny

Istnieją trzy sposoby utworzenia nowej feature gałęzi, która śledzi origin/feature zdalnego gałęzi:

  • git checkout --track -b feature origin/feature ,
  • git checkout -t origin/feature ,
  • git checkout feature - zakładając, że nie ma lokalnej gałęzi feature i jest tylko jeden zdalny z gałęzią feature .

Aby ustawić upstream do śledzenia zdalnej gałęzi - wpisz:

  • git branch --set-upstream-to=<remote>/<branch> <branch>
  • git branch -u <remote>/<branch> <branch>

gdzie:

  • <remote> może być: origin , develop lub utworzone przez użytkownika,
  • <branch> to <branch> użytkownika do śledzenia na odległość.

Aby sprawdzić, które oddziały zdalne śledzą Twoje oddziały lokalne:

  • git branch -vv

Zmień nazwę oddziału

Zmień nazwę oddziału, który sprawdziłeś:

git branch -m new_branch_name

Zmień nazwę innej gałęzi:

git branch -m branch_you_want_to_rename new_branch_name

Zastąp pojedynczy plik w bieżącym katalogu roboczym tym samym z innego oddziału

Wyewidencjonowany plik nadpisze jeszcze niezatwierdzone zmiany, które wprowadziłeś w tym pliku.

To polecenie sprawdzi plik file.example (który znajduje się w path/to/ katalogu path/to/ ) i zastąpi wszelkie zmiany, które mogłeś wprowadzić w tym pliku.

git checkout some-branch path/to/file

some-branch może być dowolnym tree-ish znanym gitowi (zobacz Wybór wersji i gitrevisions po więcej szczegółów)


Musisz dodać -- przed ścieżką, jeśli Twój plik może zostać pomylony z plikiem (opcjonalnie w przeciwnym razie). Brak więcej opcji mogą być dostarczane po -- .

git checkout some-branch -- some-file

Drugi some-file to plik w tym przykładzie.

Usuń zdalną gałąź

Aby usunąć gałąź na origin repozytorium zdalnego można użyć do Git wersji 1.5.0 i nowszych

git push origin :<branchName>

a od wersji Git 1.7.0 możesz usunąć zdalną gałąź za pomocą

git push origin --delete <branchName>

Aby usunąć lokalną gałąź zdalnego śledzenia:

git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter

git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p      # Shorter

Aby usunąć oddział lokalnie. Pamiętaj, że nie spowoduje to usunięcia oddziału, jeśli wystąpią w nim jakieś nie połączone zmiany:

git branch -d <branchName>

Aby usunąć gałąź, nawet jeśli nie ma połączonych zmian:

git branch -D <branchName>

Utwórz gałąź osieroconą (tj. Gałąź bez zatwierdzenia nadrzędnego)

git checkout --orphan new-orphan-branch

Pierwsze zatwierdzenie dokonane w tej nowej gałęzi nie będzie miało rodziców i będzie źródłem nowej historii całkowicie odłączonej od wszystkich innych gałęzi i zobowiązań.

źródło

Wciśnij gałąź do pilota

Służy do wypychania zatwierdzeń dokonanych w lokalnym oddziale do zdalnego repozytorium.

Polecenie git push przyjmuje dwa argumenty:

  • Zdalna nazwa, na przykład origin
  • Nazwa oddziału, na przykład master

Na przykład:

git push  <REMOTENAME> <BRANCHNAME>

Na przykład zazwyczaj uruchamiasz git push origin master aby przesłać lokalne zmiany do repozytorium online.

Użycie -u (skrót od --set-upstream ) spowoduje ustawienie informacji o śledzeniu podczas wypychania.

git push -u <REMOTENAME> <BRANCHNAME>

Domyślnie git wypycha gałąź lokalną do gałęzi zdalnej o tej samej nazwie. Na przykład, jeśli masz lokalną funkcję o nazwie new-feature , naciśnięcie gałęzi lokalnej spowoduje utworzenie new-feature oddziału zdalnego. Jeśli chcesz użyć innej nazwy dla zdalnego oddziału, dołącz nazwę zdalnej po lokalną nazwą oddziału, oddzielone przez : :

git push <REMOTENAME> <LOCALBRANCHNAME>:<REMOTEBRANCHNAME>

Przenieś bieżącą gałąź HEAD do dowolnego zatwierdzenia

Gałąź jest tylko wskaźnikiem zatwierdzenia, więc możesz swobodnie ją przenosić. Aby było tak, aby gałąź odwoływała się do zatwierdzenia aabbcc , wydaj polecenie

git reset --hard aabbcc

Pamiętaj, że spowoduje to zastąpienie bieżącego zatwierdzenia twojego oddziału, a tym samym całej jego historii. Możesz stracić trochę pracy, wydając to polecenie. W takim przypadku możesz użyć rejestru, aby odzyskać utracone zatwierdzenia. Zaleca się wykonanie tego polecenia w nowym oddziale zamiast w bieżącym.

Jednak to polecenie może być szczególnie przydatne podczas zmiany lub wykonywania innych dużych modyfikacji historii.

Szybkie przejście do poprzedniej gałęzi

Możesz szybko przejść do poprzedniego oddziału za pomocą

git checkout -

Wyszukiwanie w oddziałach

Aby wyświetlić listę lokalnych oddziałów, które zawierają określone zatwierdzenie lub znacznik

git branch --contains <commit>

Aby wyświetlić listę lokalnych i zdalnych gałęzi, które zawierają określone zatwierdzenie lub znacznik

git branch -a --contains <commit>


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow