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

7422

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

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

В случае, если вам нужно также переименовать удаленную ветку:
Как переименовать как локальную, так и удаленную ветку Git?

Теги:
git-branch

31 ответ

12479
Лучший ответ

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

git branch -m <oldname> <newname>

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

git branch -m <newname>

Способом запомнить это, -m для "move" (или mv), то есть как вы переименовываете файлы.

  • 61
    Что я действительно хотел знать, так это то, будет ли это обязательно влиять на удаленную ветку, когда / если вы нажмете
  • 149
    @PandaWood: он добавит новую ветку при нажатии, но не удалит старую ветку. Если вы используете git push -f --mirror , тогда он переименует ветку на удаленном компьютере, но вы должны использовать этот метод только в том случае, если удаленный должен быть просто копией вашего текущего хранилища. Смотрите также этот вопрос: stackoverflow.com/questions/1526794/git-rename-remote-branch
Показать ещё 13 комментариев
364
git branch -m old_branch_name new_branch_name

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

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

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

Подробнее см. "Как переименовать имя локальной ветки в Git.

286

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

git branch -m <newname>
  • 140
    Вам нужно будет использовать -M для переименования, если вы меняете только заглавные буквы, поскольку git скажет вам, что ветвь уже существует.
205

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

  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
  • 0
    На каком этапе можно было бы отключить восходящий поток? До шага 4?
  • 0
    @ Циклон-код: да. после шага 4. Но убедитесь, что вы запустили git status, чтобы проверить, имеет ли он ссылку на старую ветку.
159

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

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

Цитата из Несколько состояний. Переименуйте локальную и удаленную ветвь в git

1. Переименуйте локальную ветвь

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

git branch -m new-name

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

git branch -m old-name new-name

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

git push origin :old-name new-name

3. Reset ветвь восходящего потока для локальной ветки нового имени

git push origin -u new-name
  • 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'
  • 1
    У вас проблема при запуске команды git push origin :old-name new-name right?
Показать ещё 1 комментарий
85

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

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

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

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

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
66

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

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

git checkout -dumb-name

git checkout -- -dumb-name

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

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

git checkout {hash}
git checkout -b brilliant-name
git branch -d -- -dumb-name
  • 8
    Не могли бы вы просто переименовать файл в refs /heads?
  • 0
    То же самое. Если вам нужно покопаться в структуре каталогов, чтобы выполнить эту магию, проделайте весь путь и выполните 'mv - -dumb-name brilliant-name'. Выполните 'git branch -av', и вы увидите структуру каталогов: .git / рефов. Или, может быть, 'grep -R ^ .git / refs', чтобы увидеть хэши напрямую.
Показать ещё 4 комментария
55

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

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

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

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

git push origin :[old-branch]

Чтобы внести изменения в создание новой ветки:

git push origin [new-branch]
29

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

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
27

Расширенные 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
25

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

git branch -m old_branchname new_branchname

Здесь длинное название -m опция --move. Таким образом, мы также можем использовать:

git branch --move old_branchname new_branchname

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

git branch -m new_branchname

или же

git branch -move new_branchname

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

git push origin :old_branchname new_branchname

Это удалит удаленную ветку old_branchname и протолкнет локальную ветку new_branchname.

git push origin -u new_branchname

Это сбросит восходящую ветку для локальной ветки new_branchname.

23
  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

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

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

18

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

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

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

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

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

Ничего больше.

  • 1
    Обратите внимание, что эта ситуация может также возникнуть на Mac, который также (исключительно раздражает) нечувствителен к регистру в своей файловой системе.
  • 0
    В качестве альтернативы, вы можете использовать -M вместо -m чтобы сделать такое переименование «исправления оболочки» за один шаг.
17

Попытка ответить конкретно на вопрос (по крайней мере, заголовок).

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

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

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

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

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

15

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

Изображение 7439

14

Поменять ветку локально довольно просто...

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

git branch -m my_new_branch

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

git branch -m my_old_branch my_new_branch

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

Изображение 7440

14

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

[alias]
    mvh = !sh -c 'git branch -m 'git rev-parse --abbrev-ref HEAD' $1'
13

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

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

  • 5
    Я бы не назвал это болью. Команда git очень проста в использовании, как только вы увидите этот ответ, вы, вероятно, больше никогда не вернетесь. Проблема состоит в том, что, похоже, документация командной строки git недостаточно интуитивна.
  • 1
    Правда, но с SourceTree мне почти никогда не нужно беспокоиться о проверке документации. Все, как правило, интуитивно понятно - просто щелкните правой кнопкой мыши и посмотрите, какие есть варианты. (Кстати, я никак не связан с ними - как инструмент!)
11

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

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

Во-первых, вы хотите изменить местное отделение. Это не может быть проще:

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

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

8

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

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

7

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

git branch -m [old_branch] [new_branch]

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

git push origin :[old_branch]

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

git push origin :old_branch new_branch
4

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

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

Для больше, посмотрите это.

2

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

Изображение 7441

2
git branch -m old_branch_name  new_branch_name

или же

git branch --move old_branch_name new_branch_name
  • 1
    Это похоже на повторение существующих ответов.
1

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

Шаг 1, git branch -m old_branchname new_branchname

Шаг 2 git push origin :old_branchname new_branchname

1

Переименовать ветку 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$
1

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

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

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

0

В PhpStorm:

VCS → Git → Филиалы... → Локальные ветки → _your_branch_ → Переименовать

0

Если хотите:

  • Переименуйте репозиторий 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню