Проблема при переименовании ветки из прописных в строчные в локальных и удаленных репозиториях git - PullRequest
0 голосов
/ 10 января 2020

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

Команды, которые я также попробовал

git branch -m newfeature
git branch -m NEWFEATURE newfeature

Ошибка, которую я получаю когда я пытаюсь использовать приведенные выше команды

fatal: A branch named 'newfeature' already exists

Ответы [ 2 ]

1 голос
/ 10 января 2020

Две точки:

  • Если ваш Git репозиторий находится в нечувствительной к регистру файловой системе (скажем, NTFS с настройками по умолчанию на Windows или HFS [+] на MacOS ), любая попытка переименовать ветвь в другую версию сама по себе потерпит неудачу.

    Причина в том, что ("fre sh") ветви в Git хранятся в виде простых файлов с именами из таких файлов является названием ветви, которую они представляют. В файловой системе без учета регистра имена «foo», «FOO» и «FoO» считаются относящимися к одному и тому же файлу, поэтому невозможно создать файл с именем «что угодно», если файл с именем «WHATEVER» уже существует в тот же каталог.

  • Чтобы принудительно переписать ветвь при использовании команды git branch -m, вы можете использовать ее версию в верхнем регистре: git branch -M заменит целевую ветвь, даже если она существует.

Напомним, что самый простой способ переименовать ветку - это отключить ее через какое-то нейтральное имя, которое в настоящее время не занято:

git branch -m temp newfeature
git branch -m newfeature NEWFEATURE

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

git push origin WHATEVER:refs/heads/whatever :refs/heads/WHATEVER

выдаст локальную ветку "WHATEVER" для создания ветви с именем " что угодно «в удаленном репо, известном как« origin », а затем удалите там ветку с именем« WHATEVER ».

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

0 голосов
/ 10 января 2020

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

Итак, обе команды верны, вы только что выполнили это для первой go.

ПРИМЕЧАНИЕ: если вы используете Windows, в котором есть файловая система, чувствительная к регистру, вам нужно передать параметр -M. --move --force означает принудительное переименование.

Вы можете просмотреть все свои ветви с помощью

git branch -a

и посмотреть, как их зовут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...