Поиск…


Синтаксис

  • 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>…​]

параметры

параметр подробности
-d, --delete Удалите ветвь. Филиал должен быть полностью объединен в своей восходящей ветке или в HEAD если не было установлено --track с помощью --track или --set-upstream
-D Ярлык для --delete --force
-m, --move Переместить / переименовать ветку и соответствующий рефлог
Ярлык для --move --force
-r, --remotes Список или удалить (если используется с -d) ветви удаленного отслеживания
-a, --все Список ветвей удаленного отслеживания и локальных ветвей
--список Активируйте режим списка. git branch <pattern> попытается создать ветвь, используйте git branch --list <pattern> чтобы git branch --list <pattern> соответствующие ветви
--set-вверх по течению Если указанная ветвь еще не существует или если --force был указан, действует точно так же, как --track . В противном случае настройка конфигурации, например, --track, будет возникать при создании ветки, за исключением того, что точки ветвления не изменяются

замечания

Каждый репозиторий git имеет одну или несколько ветвей . Ветвь является именованной ссылкой на HEAD последовательности коммитов.

Git repo имеет текущую ветвь (обозначенную * в списке названий ветвей, напечатанной командой git branch ). Всякий раз, когда вы создаете новую фиксацию с помощью команды git commit , ваша новая фиксация становится HEAD текущей ветви и предыдущий HEAD становится родителем нового коммита.

Новая ветвь будет иметь тот же HEAD что и ветвь, из которой она была создана, пока что-то не будет привязано к новой ветке.

Листинговые ветки

Git предоставляет несколько команд для перечисления филиалов. Все команды используют функцию git branch , которая предоставит список определенных ветвей, в зависимости от того, какие параметры помещаются в командной строке. Git, если возможно, укажет текущую выбранную ветку со звездой рядом с ней.

Цель команда
Список местных филиалов git branch
Список локальных филиалов verbose git branch -v
Список удаленных и локальных филиалов git branch -a ИЛИ git branch --all
Список удаленных и локальных ветвей (verbose) git branch -av
Список удаленных филиалов git branch -r
Список удаленных филиалов с последней фиксацией git branch -rv
Список объединенных филиалов git branch --merged
Перечислить несвязанные ветви git branch --no-merged
Список ветвей, содержащих фиксацию git branch --contains [<commit>]

Примечания :

  • Добавление дополнительного v в -v например, $ git branch -avv или $ git branch -vv также напечатает имя ветви вверх по течению.
  • Филиалы, показанные красным цветом, являются удаленными ветвями

Создание и проверка новых ветвей

Чтобы создать новую ветку, оставаясь в текущей ветке, используйте:

git branch <name>

Как правило, имя филиала не должно содержать пробелов и подлежит другим спецификациям, перечисленным здесь . Чтобы перейти к существующей ветке:

git checkout <name>

Чтобы создать новую ветку и переключиться на нее:

git checkout -b <name>

Чтобы создать ветвь в точке, отличной от последней фиксации текущей ветви (также известной как HEAD), используйте одну из следующих команд:

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

<start-point> может быть любой версией, известной git (например, другое имя ветки, commit SHA или символическая ссылка, такая как HEAD или имя тега):

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

Чтобы создать ветку из удаленной ветви (по умолчанию <remote_name> есть начало):

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

Если заданное имя филиала найдено только на одном пульте, вы можете просто использовать

git checkout -b <branch_name>

что эквивалентно

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

Иногда вам может потребоваться переместить несколько ваших недавних коммитов в новую ветку. Это может быть достигнуто путем ветвления и «откидывания назад», например:

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

Вот иллюстративное объяснение этого метода:

 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

Удалять ветвь локально

$ git branch -d dev

Удаляет ветвь с именем dev если ее изменения объединены с другой ветвью и не будут потеряны. Если ветвь dev содержит изменения, которые еще не были объединены, которые будут потеряны, git branch -d завершится с ошибкой:

$ 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'.

За предупреждающее сообщение вы можете принудительно удалить ветвь (и потерять любые несвязанные изменения в этой ветке) с помощью флага -D :

$ git branch -D dev

Проверьте новую ветку, отслеживающую удаленную ветку

Существует три способа создания новой feature ветвления, которая отслеживает origin/feature удаленного филиала:

  • git checkout --track -b feature origin/feature ,
  • git checkout -t origin/feature ,
  • git checkout feature - при условии, что нет локальной ветки feature и есть только один пульт с ветвью feature .

Чтобы настроить восходящий поток для отслеживания удаленного типа ветви:

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

где:

  • <remote> может быть: origin , develop или созданный пользователем,
  • <branch> - <branch> пользователя для отслеживания на удаленном компьютере.

Чтобы проверить, какие удаленные отделения отслеживают ваши локальные филиалы:

  • git branch -vv

Переименовать ветвь

Переименуйте выделенную ветку:

git branch -m new_branch_name

Переименовать другую ветку:

git branch -m branch_you_want_to_rename new_branch_name

Перезаписать одиночный файл в текущем рабочем каталоге с тем же именем из другой ветви

Выбранный файл перезапишет еще не внесенные изменения, которые вы сделали в этом файле.

Эта команда проверит файл file.example (который находится в path/to/ каталога path/to/ ) и перезапишет любые изменения, которые вы могли бы внести в этот файл.

git checkout some-branch path/to/file

some-branch может быть любым tree-ish известным git (см. Редактирование выбора и gitrevisions для получения дополнительной информации)


Вы должны добавить -- до пути, если ваш файл может быть ошибочно принят за файл (необязательно в противном случае). После -- .

git checkout some-branch -- some-file

Второй some-file - это файл в этом примере.

Удаление удаленной ветви

Чтобы удалить ветку на origin удаленном хранилище, вы можете использовать для Git версии 1.5.0 и новее

git push origin :<branchName>

и с версии Git версии 1.7.0 вы можете удалить удаленную ветку, используя

git push origin --delete <branchName>

Чтобы удалить локальную ветвь удаленного отслеживания:

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

Чтобы удалить ветвь локально. Обратите внимание, что это не приведет к удалению ветки, если она имеет любые несанкционированные изменения:

git branch -d <branchName>

Чтобы удалить ветвь, даже если она имеет несвязанные изменения:

git branch -D <branchName>

Создайте сиротскую ветвь (т.е. ветвь без фиксации родителя)

git checkout --orphan new-orphan-branch

Первая фиксация, сделанная в этой новой ветке, не будет иметь родителей, и она станет корнем новой истории, полностью отключенной от всех других ветвей и совершит.

источник

Вставить ветку в удаленный

Используйте, чтобы нажимать фиксации, сделанные на вашей локальной ветке, в удаленный репозиторий.

Команда git push принимает два аргумента:

  • Удаленное имя, например, origin
  • Название ветки, например, master

Например:

git push  <REMOTENAME> <BRANCHNAME>

Например, вы обычно запускаете git push origin master чтобы перенаправить локальные изменения в свой онлайн-репозиторий.

Использование -u (short для --set-upstream ) будет настраивать информацию отслеживания во время нажатия.

git push -u <REMOTENAME> <BRANCHNAME>

По умолчанию git помещает локальную ветвь в удаленную ветку с тем же именем. Например, если у вас есть локальная new-feature , если вы нажмете локальную ветвь, она также создаст new-feature ветвь. Если вы хотите использовать другое имя для удаленного филиала, добавьте имя удаленного после имени локального филиала, отделенных : :

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

Переместить текущую ветвь HEAD в произвольное

Ветвь - это всего лишь указатель на фиксацию, поэтому вы можете свободно перемещать ее. Чтобы сделать это так, чтобы ветвь aabbcc на commit aabbcc , выполните команду

git reset --hard aabbcc

Обратите внимание, что это приведет к перезаписыванию текущей фиксации вашего филиала и, как следствие, всей его истории. Вы можете потерять некоторую работу, выпустив эту команду. Если это так, вы можете использовать reflog для восстановления потерянных коммитов . Рекомендуется выполнить эту команду на новой ветке вместо текущей.

Однако эта команда может быть особенно полезна при перезагрузке или выполнении таких больших изменений истории.

Быстрый переход к предыдущей ветке

Вы можете быстро переключиться на предыдущую ветку, используя

git checkout -

Поиск в филиалах

Чтобы просмотреть локальные ветви, содержащие конкретную фиксацию или тег

git branch --contains <commit>

Список локальных и удаленных филиалов, которые содержат конкретную фиксацию или тег

git branch -a --contains <commit>


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow