Как переименовать локальную ветку Git?

avatar
Forrest
6 июля 2011 в 03:20
3695825
36
9753

Я не хочу переименовывать удаленную ветку, как описано в Переименовать главную ветвь как для локальных, так и для удаленных репозиториев Git .

Как я могу переименовать локальную ветку, которая не была отправлена ​​в удаленный репозиторий?

Если вам нужно переименовать и удаленную ветку , :
Как переименовать локальную и удаленную ветку Git? <7927922> <7927922

>
Источник

Ответы (36)

avatar
siride
6 июля 2011 в 03:21
15926

Если вы хотите переименовать ветку, указав на любую ветку, выполните:

git branch -m <oldname> <newname>

Если вы хотите переименовать текущую ветку, вы можете сделать:

git branch -m <newname>

Если вы хотите нажать локальную ветвь и сбросить вышестоящую ветку:

git push origin -u <newname>

И, наконец, если вы хотите удалить удаленную ветку:

git push origin --delete <oldname>

Способ запомнить: -m означает "перемещение" (или mv), то есть то, как вы переименовываете файлы. Также может помочь добавление псевдонима. Для этого запустите следующее:

git config --global alias.rename 'branch -m'

Если вы используете Windows или другую файловую систему без учета регистра и в имени изменяются только заглавные буквы, вам нужно использовать -M, иначе git выдаст ветка уже существует ошибка:

git branch -M <newname>
PandaWood
23 января 2012 в 00:15
111

Я действительно хотел знать, обязательно ли это повлияет на удаленную ветку, когда / если вы нажмете

siride
23 января 2012 в 06:02
217

@PandaWood: он добавит новую ветку при нажатии, но не удалит старую ветку. Если вы используете git push -f --mirror, тогда он переименует ветку на удаленном компьютере, но вы должны использовать этот метод только в том случае, если удаленный компьютер просто должен быть копией вашего текущего репозитория. См. Также этот вопрос: coderhelper.com/questions/1526794/git-rename-remote-branch

Erin Stanfill
31 октября 2013 в 23:46
26

@PandaWood, это зависит от того, как настроен push.default. По умолчанию (matching) он отправляется на удаленный компьютер, имя которого совпадает. Вам нужно будет выполнить git push origin <newname>:<oldname> или вы создадите новую удаленную ветку. Однако, если для push.default установлено значение upstream, вы можете использовать push origin head, и на удаленном компьютере все перейдет к старому имени.

robenkleene
22 сентября 2015 в 17:56
60

Длинное имя параметра -m - --move, например, git branch --move master переименовывает текущую ветвь в «главную».

JL Peyret
22 марта 2016 в 01:01
0

интересно, похоже, что переименование временно нечувствительно к регистру даже на OSX. Начиная с FB12.show_hide_cols , -m fb12.show_hide_cols получил ошибку существующей ветки. Но -m fb12.show_hide_col , затем -m fb12.show_hide_cols привело меня туда, куда я хотел. после этого git branch показывает только одну переименованную ветку, как я и хотел.

David Meza
1 апреля 2016 в 14:52
3

После этого вы также должны запустить git push origin :<old_name> <new_name>, чтобы обновить имена удаленных веток.

IInspectable
16 декабря 2019 в 11:57
0

Nitpicking: файловая система Windows (NTFS) фактически чувствительна к регистру. Он предназначен для систем, которые выбирают доступ к файловой системе без учета регистра. Windows делает это.

Kiwi Rupela
22 апреля 2020 в 16:35
0

Возможно ли, что старая ветка не удаляется в Windows, если я использую -m и ту же ветку с двумя именами, и если я фиксирую в новой ветке, она идет дальше от более старой coderhelper.com/questions/61367248/…

Wade
14 апреля 2021 в 18:47
1

Вы не потеряете изменения (неустановленные / измененные файлы) при выполнении этого локально. Скажем, например, вы работаете над новой веткой ... тогда, прежде чем зафиксировать свои изменения, вы понимаете, что то, что вы на самом деле сделали, не соответствует имени ветки. Вы можете смело переименовать его, прежде чем вносить изменения. Таким образом, когда он сливается, имена обретают смысл позже. - Просто хотел добавить, что это не было упомянуто на случай, если кто-то еще задается вопросом, что произойдет :)

avatar
Andrew
13 ноября 2021 в 17:02
3

Чтобы переименовать локальную ветку на GitHub Desktop, щелкните вкладку Current Branches (справа от текущего репозитория), щелкните правой кнопкой мыши ветку, которую хотите переименовать, и нажмите при переименовании. Затем вам будет предложено всплывающее окно, где вы можете переименовать.

enter image description here

avatar
HoseiniPeyrov
7 ноября 2021 в 16:14
-4

В Visual Studio:

Git → Управление ветками → Ветки → your_repositoryyour_branch → Rename

avatar
S. Hesam
28 сентября 2020 в 13:01
7

Прежде чем мы начнем, убедитесь, что вы выбрали ветку, которую хотите переименовать:

git checkout old-name

Если вы хотите увидеть все свои локальные филиалы, используйте следующую команду:

git branch --list

Когда все в порядке, выполните следующие действия:

  1. Для использования команды переименования ветки Git потребуется добавить в команду параметр -m :

    git branch -m new-name
    
  2. Вы также можете переименовать локальную ветку из другой ветки с помощью следующих двух команд:

    git checkout master
    
    git branch -m old-name new-name
    
  3. Наконец, эта команда выведет список всех - как локальных, так и удаленных - ветвей, чтобы убедиться, что они были переименованы:

    git branch -a
    

Хотя переименовать удаленную ветку напрямую невозможно, процесс переименования одной включает три простых шага:

  1. Для начала вам нужно будет переименовать локальную ветку, выполнив предыдущие шаги. 2. Затем удалите ветвь старую и нажмите новую новую одну. Вы можете легко сделать это с помощью следующих команд:

     git push origin --delete old-name
     git push origin :old-name new-name
    
  2. Сбросьте вышестоящую ветку для вашего нового локального филиала, и все будет готово:

    git push origin -u new-name
    
avatar
AmerllicA
5 августа 2020 в 08:24
9

На самом деле у вас есть три шага, потому что у локального филиала есть дубликат на сервере, поэтому у нас есть один шаг для локального на двух шагах на сервере:

  1. Rename local: просто используйте следующую команду, чтобы переименовать текущую ветку, даже если вы ее проверили:
    git branch -m <old-branch-name> <new-branch-name>
    
  2. Удалите серверный: используйте следующую команду для удаления ветки старого имени на сервере:
    git push <remote-name[origin by default]> :<old-branch-name>
    
  3. Нажмите новую ветку: , теперь пора отправить новую ветку с именем на сервере:
    git push -u <new-branch-name>
    
SP007
17 сентября 2020 в 15:53
1

в моем случае 3-я команда заботится о переименовании удаленной ветки, не выполняя выше 2-ю команду. Надо ли удалять перед переименованием удаленную ветку?

AmerllicA
17 сентября 2020 в 18:52
1

@ SP007, 2-я команда не важна, но я немного беспокоюсь о ясности на git server. поэтому я не храню бесполезные ветки.

avatar
MD SHAYON
27 июля 2020 в 13:49
1

Для локально

сначала измените текущую ветку с ветки, имя которой вы хотите обновить например, у меня есть 3 ветви branch1 , branch2 , branch3

проверить текущий филиал

git branch --show-current

вывод может: branch1

тогда вы можете обновить имя ветки2 и ветки3, а не текущее

git branch -m old_branchname new_branchname



Для удаленного

Всего три шага для репликации изменения имени как на удаленном компьютере, так и на GitHub:

git branch -m old_branchname new_branchname
git push origin :old_branchname new_branchname
git push --set-upstream origin new_branchname
avatar
user13512643
10 мая 2020 в 17:21
1

Все, что вам нужно сделать, это три шага:

  1. Дайте старой ветке в .git / refs / Head новое имя
  2. Дайте старой ветке в .git / logs / refs / Head новое имя
  3. Обновите .git / HEAD, чтобы указать новое имя ветки
avatar
Saad Bilal
27 августа 2019 в 14:57
-3
git branch -m [old-branch] [new-branch]

-m означает переместить все из [old-branch] в [new-branch] и помните, что вы можете использовать -M для других файловых систем.

avatar
Hari_pb
22 марта 2019 в 01:03
81

Всего три шага для репликации изменения имени на remote, а также на GitHub:

Шаг 1 git branch -m old_branchname new_branchname

Шаг 2 git push origin :old_branchname new_branchname

Шаг 3 git push --set-upstream origin new_branchname

Ibrahim Mohamed
17 августа 2019 в 03:33
3

Мне также пришлось сделать еще одну вещь: git push --set-upstream origin new_branchname, которая упоминается в ответе @Nomade

Hari_pb
25 марта 2020 в 02:19
0

@Dev не во всех случаях Dev, мне недавно пришлось обновить, так как я использовал bitbucket и codecommit, шаг 3 необходим

avatar
Ivan
3 сентября 2018 в 15:58
5

Для пользователей Git GUI это не может быть намного проще. В графическом интерфейсе Git выберите имя ветки из раскрывающегося списка в диалоговом окне «Переименовать ветвь», созданном из пункта меню «Ветвь: переименовать», введите новое имя и нажмите «Переименовать». Я выделил, где найти раскрывающийся список.

Rename a local Git branch

avatar
badarshahzad
8 апреля 2018 в 05:49
39
  1. Переименуйте местный филиал.

Если вы находитесь в ветке, которую хотите переименовать:

git branch -m new-name

Если вы находитесь в другом филиале:

git branch -m old-name new-name
  1. Удалите удаленную ветку со старым именем и вставьте локальную ветку с новым именем.

git push origin :old-name new-name

  1. Сбросить восходящую ветвь для локальной ветки с новым именем. Перейдите в ветку и затем:

git push origin -u new-name

Или, чтобы быстро сделать это, вы можете использовать эти 3 шага:

# Переименовать ветку локально

git branch -m old_branch new_branch  

# Удалить старую удаленную ветку

git push origin :old_branch  

# Нажимаем новую ветку, устанавливаем локальную ветку для отслеживания нового удаленного

git push --set-upstream origin new_branch   

Ссылка: https://www.w3docs.com/snippets/git/how-to-rename-git-local-and-remote-branches.html

avatar
Nomade
27 марта 2018 в 16:00
19

Простой способ сделать это:

git branch -m old_branch new_branch         # Rename branch locally
git push origin :old_branch                 # Delete the old branch
git push --set-upstream origin new_branch   # Push the new branch, set local branch to track the new remote

Подробнее см. этот.

avatar
AlexSi
14 марта 2018 в 20:46
1

В PhpStorm:

VCS → Git → Ветви ... → Локальные ветки → _ваша_ ветка_ → Переименовать

avatar
Mohideen bin Mohammed
1 сентября 2017 в 06:59
7

Переименовать ветку Git можно с помощью:

  1. git branch -m oldBranch newBranch

  2. git branch -M oldBranch ExistingBranch

Разница между -m и -M :

-m: , если вы пытаетесь переименовать свою ветку с существующим именем ветки с помощью -m . Это вызовет ошибку, сообщающую, что ветка уже существует. Укажите уникальное имя.

Но,

-M: это поможет вам принудительно переименовать с заданным именем, даже если оно существует. Таким образом, существующая ветка будет полностью заменена им ...

Вот пример терминала Git,

mohideen@dev:~/project/myapp/sunithamakeup$ git branch
  master
  master0
  new_master
  test
* test1
mohideen@dev:~/project/myapp/sunithamakeup$ git branch -m test1 test
fatal: A branch named 'test' already exists.
mohideen@dev:~/project/myapp/sunithamakeup$ git branch -M test1 test
mohideen@dev:~/project/myapp/sunithamakeup$ git branch
  master
  master0
  new_master
* test
mohideen@dev:~/project/myapp/sunithamakeup$
avatar
Dai Kaixian
29 августа 2017 в 02:16
4

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

Я использую git branch -b <new_branch_name>. И если вы не хотите сохранять старую ветку сейчас, вы можете выполнить git branch -D <old_branch_name>, чтобы удалить ее.

Я знаю, что это может быть немного утомительно, но это легче понять и запомнить. Надеюсь, это поможет вам.

avatar
Vineet Jain
26 августа 2017 в 14:18
3

Если вы хотите:

  • Переименуйте репозиторий Git, запустите: git branch -m <oldname> <newname>
  • Удалить старую ветку: git push origin: old-name new-name
  • Зафиксируйте его, используя: git commit <newname>
    • , а затем нажмите, используя: git push origin new_branch_name:master
  • Если вы хотите проверить статус, используйте: git status
  • Если вы хотите оформить заказ, используйте: git checkout
avatar
Alireza
4 июля 2017 в 14:01
25

Изменить ветку локально довольно просто ...

Если вы находитесь в ветке, имя которой хотите изменить, просто сделайте следующее:

git branch -m my_new_branch

В противном случае, если вы находитесь в master или любой другой ветке , кроме той, имя которой вы хотите изменить, просто выполните:

git branch -m my_old_branch my_new_branch

Кроме того, я создаю изображение ниже, чтобы показать это в действии в командной строке . В этом случае вы находитесь в ветке master, например:

Change branch name locally

avatar
Marcin Szymczak
26 мая 2017 в 11:14
21

Если вы хотите использовать SourceTree (что я настоятельно рекомендую), вы можете щелкнуть правой кнопкой мыши свою ветку и выбрать «Переименовать».

enter image description here

avatar
Arif
31 января 2017 в 15:53
11

Если вы хотите изменить имя текущей ветки, запустите:

git branch -m [old_branch] [new_branch]

Если вы хотите удалить старую удаленную ветку, запустите:

git push origin :[old_branch]

Если вы хотите удалить старую удаленную ветку и создать новую удаленную ветку, запустите:

git push origin :old_branch new_branch
avatar
trungk18
14 октября 2016 в 03:22
264

Переименование ветки будет полезно, когда ваша ветка будет завершена. Затем приходит новый материал, и вы хотите развиваться в той же ветке вместо того, чтобы удалять его и создавать новый.

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

Цитата из нескольких состояний - переименуйте локальную и удаленную ветвь в git

1. Переименуйте местный филиал в

Если вы находитесь в ветке, которую хотите переименовать:

git branch -m new-name

Если вы находитесь в другом филиале:

git branch -m old-name new-name

2. Удалите удаленную ветку со старым именем и нажмите локальную ветку с новым именем

git push origin :old-name new-name

3. Сбросьте восходящую ветвь для локальной ветки с новым именем

git push origin -u new-name
Anto
23 февраля 2018 в 15:26
1

Этот сработал для меня лучше. Здесь 2 шага дали мне следующие ошибки: error: dst ref refs/heads/<old-name> receives from more than one src.; error: failed to push some refs to 'git@uri:foo/bar.git'

trungk18
23 февраля 2018 в 15:28
1

У вас проблема при запуске команды git push origin :old-name new-name, верно?

avatar
nikkypx
22 сентября 2016 в 00:03
14

Git версии 2.9.2

Если вы хотите изменить имя локальной ветки, в которой вы находитесь:

git branch -m new_name

Если вы хотите изменить имя другой ветви:

git branch -m old_name new_name

Если вы хотите изменить имя другой ветви на уже существующее имя:

git branch -M old_name new_name_that_already_exists

Примечание: последняя команда является деструктивной и переименует вашу ветку, но вы потеряете старую ветку с этим именем и эти коммиты, потому что имена веток должны быть уникальными.

avatar
Pierre-Olivier Vares
19 мая 2016 в 10:39
36

Пытаюсь конкретно ответить на вопрос (хотя бы заголовок).

Вы также можете переименовать локальную ветвь , но сохраните старое имя на пульте дистанционного управления.

git branch -m old_branch new_branch
git push --set-upstream origin new_branch:old_branch

Теперь, когда вы запускаете git push, удаленная ссылка old_branch обновляется вашим локальным new_branch.

Вы должны знать и помнить эту конфигурацию. Но это может быть полезно, если у вас нет выбора для имени удаленной ветки, но оно вам не нравится (о, я имею в виду, у вас есть очень хорошая причина не любить это !) и предпочитайте более ясное название для вашего местного отделения.

Играя с конфигурацией выборки, вы даже можете переименовать локальную удаленную ссылку. то есть, имея указатель ссылки refs/remote/origin/new_branch на ветку, который фактически является old_branch на origin. Однако я настоятельно не рекомендую это делать для вашей безопасности.

avatar
Hazarapet Tunanyan
10 мая 2016 в 18:04
31

Вот три шага: Команда, которую вы можете вызвать внутри своего терминала и изменить имя ветки.

git branch -m old_branch new_branch         # Rename branch locally
git push origin :old_branch                 # Delete the old branch
git push --set-upstream origin new_branch   # Push the new branch, set local branch to track the new remote

Если вам нужно больше: пошагово, Как изменить имя ветви Git - хорошая статья об этом.

avatar
Oss
17 декабря 2015 в 13:45
108

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

Если это ваша текущая ветка, просто выполните

git branch -m new_name

Если это другая ветка, которую вы хотите переименовать,

git branch -m old_name new_name

2. Отслеживание новой удаленной ветки

- Если ваша ветка была отправлена, то после переименования вам необходимо удалить ее из удаленного репозитория Git и попросить вашего нового локального пользователя отслеживать новую удаленную ветку:

git push origin :old_name
git push --set-upstream origin new_name
avatar
Tanah
27 октября 2015 в 10:17
16

Поскольку вы не хотите отправлять ветку на удаленный сервер, вам будет полезен этот пример:

Допустим, у вас есть ветка под названием «my-hot-feature», и вы хотите переименовать ее в «feature-15».

Во-первых, вы хотите изменить локальный филиал. Нет ничего проще:

git branch -m my-hot-feature feature-15

Для получения дополнительной информации посетите Локальное и удаленное переименование ветки в Git .

avatar
aliasav
20 августа 2015 в 06:39
78

Чтобы переименовать ветку локально:

git branch -m [old-branch] [new-branch]

Теперь вам нужно будет распространить эти изменения и на ваш удаленный сервер.

Для внесения изменений в удаленную старую ветку:

git push origin :[old-branch]

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

git push origin [new-branch]
avatar
Jethik
5 августа 2015 в 09:04
43

Опытные пользователи Git могут переименовать вручную, используя:

Rename the old branch under .git/refs/heads to the new name

Rename the old branch under .git/logs/refs/heads to the new name

Update the .git/HEAD to point to yout new branch name
avatar
P4C
25 мая 2015 в 11:52
28

Вероятно, как упоминалось другими, это будет несоответствие регистра в именах веток.

Если у вас такая ситуация, я могу предположить, что вы работаете в Windows, что также приведет вас к:

$ git branch -m CaseSensitive casesensitive
fatal: A branch named 'casesensitive' already exists.

Затем вам нужно выполнить промежуточный шаг:

$ git branch -m temporary
$ git branch -m casesensitive

Больше ничего.

Jon V
27 февраля 2016 в 14:41
1

Обратите внимание, что эта ситуация также может возникнуть на Mac, который также (что очень раздражает) нечувствителен к регистру в своей файловой системе.

Jon Schneider
14 февраля 2018 в 20:09
0

В качестве альтернативы вы можете использовать -M вместо -m, чтобы выполнить такое переименование "исправления корпуса" за один шаг.

avatar
Milind Anantwar
15 апреля 2015 в 12:50
350

Вот шаги, чтобы переименовать ветку:

  1. Переключитесь на ветку, которую нужно переименовать в
  2. git branch -m <new_name>
  3. git push origin :<old_name>
  4. git push origin <new_name>:refs/heads/<new_name>

РЕДАКТИРОВАТЬ (12.01.2017): Убедитесь, что вы выполнили команду git status и убедитесь, что вновь созданная ветвь указывает на свою собственную ссылку, а не на более старую. Если вы найдете ссылку на более старую ветку, вам нужно отключить восходящий поток, используя:

git branch --unset-upstream
Chris Halcrow
21 апреля 2020 в 06:58
4

Это лучший ответ здесь, поскольку он описывает полный процесс правильного завершения переименования.

Chris Halcrow
18 июня 2020 в 23:48
0

Чтобы объяснить шаги: 1 = переключиться на ветвь локально , 2 = «переместить», т. Е. «Переименовать» ветвь локально (-m), 3 = нажать «ничего» в старое место назначения ветки на удаленном ( т.е. удалить ссылку на ветку на удаленном компьютере) - левая часть двоеточия - «источник», правая сторона - «место назначения», 4 = нажать ссылку (указатель) на новую ветку, на удаленный

Chris Halcrow
18 июня 2020 в 23:52
2

@Milind Anantwar, что значит «проверить, что новая ветка указывает на ее собственный ref»? И не могли бы вы объяснить, как git branch --unset-upstream разрешает несинхронизированные условия, о которых вы говорите?

avatar
Hafiz Shehbaz Ali
11 апреля 2015 в 06:19
46

Переименуйте ветку с помощью этой команды:

git branch -m [old_branch_name] [new_branch_name]

-m: переименовывает / перемещает ветку. Если ветка уже есть, вы получите сообщение об ошибке.

Если ветка уже существует, и вы хотите переименовать ее вместе с этой веткой, используйте:

 git rename -M [old_branch_name] [new_branch_name]

Для получения дополнительной информации о помощи используйте эту команду в терминале:

git branch --help

или

man git branch
avatar
Steve Chambers
8 марта 2015 в 16:13
20

Другой вариант - вообще не использовать командную строку. Клиенты Git с графическим интерфейсом пользователя, такие как SourceTree, устраняют большую часть кривой синтаксического обучения / боли, из-за которой такие вопросы, как этот, становятся одними из самых популярных в Stack Overflow.

В SourceTree щелкните правой кнопкой мыши любую локальную ветвь на панели «Ветви» слева и выберите «Переименовать ...».

Nearoo
8 марта 2015 в 17:05
6

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

Steve Chambers
8 марта 2015 в 17:17
1

Верно, но с SourceTree мне почти не нужно беспокоиться о проверке документации. В целом все интуитивно понятно - просто щелкните правой кнопкой мыши и посмотрите, какие есть варианты. (Кстати, я никоим образом не связан с ними - как и инструмент!)

avatar
dentuzhik
2 сентября 2014 в 17:25
23

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

[alias]
    mvh = !sh -c 'git branch -m `git rev-parse --abbrev-ref HEAD` $1'
avatar
Samuel Meacham
9 ноября 2013 в 07:31
84

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

Ни один из этих вариантов не работал:

git checkout -dumb-name

git checkout -- -dumb-name

" s, ' s и \ s тоже не помогли. git branch -m не работает.

Вот как я наконец это исправил. Зайдите в .git / refs / Head вашей рабочей копии, найдите имя файла "-dumb-name", получите хеш ветки. Затем он проверит это, создаст новую ветку с вменяемым именем и удалит старую.

git checkout {hash}
git checkout -b brilliant-name
git branch -d -- -dumb-name
Dave X
19 декабря 2013 в 17:15
0

То же. Если вам нужно покопаться в структуре каталогов, чтобы сделать это волшебство, пройдите весь путь и выполните 'mv - -dumb-name brilliant-name'. Выполните 'git branch -av', и вы увидите структуру каталогов .git / ссылки. Или, может быть, 'grep -R ^ .git / refs', чтобы увидеть хеши напрямую.

Jon V
27 февраля 2016 в 14:37
0

Честно говоря, если бы вы хотели пойти именно по этому пути, я бы избегал (запутанного и потенциально опасного ИМО, если вы не знаете, что делаете) пробежки по каталогу .git в первую очередь, и просто сделайте это с помощью некоторых обычные команды с некоторым анализом "git log" (с использованием соответствующих флагов для отображения веток и определения того, из какого shasum вы хотите получить новую ветку), а затем выполните это. Затем удалите ветвь с ненадежным именем. Я презираю , что git настаивает на том, что вам нужно понимать всю его внутреннюю работу, чтобы делать что-то, но я очень ценю то, что вы можете делать эти вещи.

House of Dexter
6 марта 2017 в 17:19
0

В 2.10.1+ сложнее создать ветку с плохой репутацией. Если вы каким-то образом это сделаете, вы можете использовать git branch -v, чтобы получить короткую хеш-версию ваших веток (добавьте -r для удаленного доступа). Затем вы можете использовать git rev-parse <shorthash>, чтобы получить полный хеш, если он вам нужен.

House of Dexter
7 марта 2017 в 19:40
0

Вы также можете использовать git show-ref, это даст вам длинный хеш всего в вашем локальном репо. и я имею в виду все ... ветки / тайники / теги ... и т. д.

avatar
Vanchev
24 сентября 2013 в 13:21
134

Пока ответы были правильными, но вот дополнительная информация:

Можно безопасно переименовать ветку с помощью '-m' (переместить), но нужно быть осторожным с '-M', потому что это вызывает переименование, даже если уже существует ветка с таким же именем. Вот выдержка из справочной страницы git-branch:

С опцией -m или -M <oldbranch> будет переименован в <newbranch>. Если <oldbranch> имел соответствующий журнал ссылок, он переименовывается в соответствии с <newbranch>, и создается запись журнала ссылок для запоминания переименования ветви. Если существует <newbranch>, необходимо использовать -M для принудительного переименования.

Vanchev
26 июня 2015 в 16:48
0

Он перезаписывается новым именем / веткой. Например, если у вас есть следующие ветки в git: master b1 <- текущая ветка b2 после того, как вы выполните 'git branch -M b2', у вас будет только: master b2 <- текущая ветка b1 исчезнет, ​​и если вы хотите восстановить его, вы должны проверить его по хешу. Вы можете увидеть это, набрав «git reflog». Ваше здоровье.

Jon Schneider
14 февраля 2018 в 20:10
0

Флаг -M также полезен для принудительного переименования, если вы просто исправляете регистр имени ветки, например изменение myBranch на MyBranch. (Для -m git возвращает fatal: A branch named 'MyBranch' already exists.)

avatar
Jonathan
20 июня 2013 в 15:05
401

Чтобы переименовать текущую ветку:

git branch -m <newname>
cjspurgeon
8 мая 2015 в 21:04
183

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

techkuz
28 января 2021 в 17:57
0

и впоследствии git push origin HEAD:<oldname>

avatar
Madhan Ayyasamy
21 января 2013 в 09:49
523
git branch -m old_branch_name new_branch_name

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

Если вы хотите отправить некоторые изменения в мастер после того, как ваша локальная ветка переименована в new_branch_name (пример имени):

git push origin new_branch_name:master (теперь изменения пойдут в главную ветку, но имя вашей локальной ветки - new_branch_name)

Дополнительные сведения см. В разделе «Как переименовать имя локального филиала в Git