Answers:
如果要在指向任何分支时重命名分支,请执行以下操作:
git branch -m <oldname> <newname>
如果要重命名当前分支,可以执行以下操作:
git branch -m <newname>
记住这一点的一种方法-m
是“移动”(或mv
),这是重命名文件的方式。添加别名也可能有帮助。为此,请运行以下命令:
git config --global alias.rename 'branch -m'
如果您使用的是Windows或其他不区分大小写的文件系统,并且名称中只有大小写更改,则需要使用-M
,否则git会抛出分支已经存在的错误:
git branch -M <newname>
git push -f --mirror
,则它将重命名远程服务器上的分支,但是仅当远程服务器只是要将其作为当前存储库的副本时,才应使用此方法。另请参阅以下问题:stackoverflow.com/questions/1526794/git-rename-remote-branch
push.default
配置方式。默认情况下(matching
),它将推送到名称匹配的遥控器。您将必须做,git push origin <newname>:<oldname>
否则您将创建一个新的远程分支。但是,如果push.default
将其设置为upstream
,则可以,push origin head
并且遥控器上的名称将变为旧名称。
mv
重命名文件。原因是在基于目录的inode文件系统中进行移动和重命名是完全等效的。
-m
选项的长名称是--move
,例如,git branch --move master
将当前分支重命名为“ master”。
git branch -m old_branch_name new_branch_name
上面的命令将更改您的分支名称,但是使用重命名的分支必须非常小心,因为它仍将引用与其关联的旧的上游分支(如果有)。
如果要在将本地分支重命名为new_branch_name(示例名称)后将一些更改推送到master,请执行以下操作:
git push origin new_branch_name:master
(现在更改将转到主分支,但您的本地分支名称为new_branch_name)
有关更多详细信息,请参见“ 如何在Git中重命名本地分支名称 ”。
以下是重命名分支的步骤:
git branch -m <new_name>
git push origin :<old_name>
git push origin <new_name>:refs/heads/<new_name>
编辑(12/01/2017):确保您运行命令git status
并检查新创建的分支是否指向其自己的引用而不是较旧的引用。如果找到对较早分支的引用,则需要使用以下方法取消设置上游:
git branch --unset-upstream
分支完成后,重命名分支将很有用。然后会有新的东西出现,您想在同一个分支中进行开发,而不是删除它并创建一个新分支。
根据我的经验,要在Git中重命名本地和远程分支,您应该执行以下步骤。
如果您在分支上,则要重命名:
git branch -m new-name
如果您在另一个分支上:
git branch -m old-name new-name
git push origin :old-name new-name
git push origin -u new-name
git push origin :old-name new-name
吗?
到目前为止,答案是正确的,但是这里有一些其他信息:
可以使用-m(移动)安全地重命名分支,但是对于-M则必须小心,因为即使已经存在相同名称的分支,它也会强制重命名。以下是“ git-branch”手册页的摘录:
使用-m或-M选项,
<oldbranch>
将重命名为<newbranch>
。如果<oldbranch>
具有相应的引用日志,则将其重命名为match<newbranch>
,并创建引用日志条目以记住分支重命名。如果<newbranch>
存在,则必须使用-M强制进行重命名。
-M
如果您只是在更正分支名称的大小写(例如,更改myBranch
为),则该标志还可用于强制重命名MyBranch
。(使用-m
,git返回fatal: A branch named 'MyBranch' already exists.
)
我愚蠢地命名了一个以连字符开头的分支,然后签出master。我不想删除我的分支,我已经在其中工作了。
这些都不起作用:
git checkout -dumb-name
git checkout -- -dumb-name
"
s,'
s和\
s均无济于事。 git branch -m
不起作用。
这是我终于解决它的方法。进入工作副本的.git / refs / heads,找到文件名“ -dumb-name”,获取分支的哈希值。然后将其签出,并使用新名称创建一个新分支,然后删除旧分支。
git checkout {hash}
git checkout -b brilliant-name
git branch -d -- -dumb-name
reflog
只需三个步骤即可remote
在GitHub和GitHub 上复制名称更改:
步骤1 git branch -m old_branchname new_branchname
第2步 git push origin :old_branchname new_branchname
第三步 git push --set-upstream origin new_branchname
git push --set-upstream origin new_branchname
@Nomade答案中提到
使用以下命令重命名分支:
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
如果您在分支上,则要重命名:
git branch -m new-name
如果您在另一个分支上:
git branch -m old-name new-name
git push origin :old-name new-name
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
这是三个步骤:您可以在终端内调用并更改分支名称的命令。
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分支名称》是一篇不错的文章。
可能正如其他人所提到的,这将是分支命名中大小写不匹配的原因。
如果您遇到这种情况,我可以猜测您使用的是Windows,这也将导致您:
$ git branch -m CaseSensitive casesensitive
fatal: A branch named 'casesensitive' already exists.
然后,您必须执行一个中间步骤:
$ git branch -m temporary
$ git branch -m casesensitive
而已。
-M
而不是-m
在单个步骤中进行这种“套管修复”重命名。
尝试专门回答问题(至少标题)。
您也可以重命名本地分支,但会继续跟踪远程站点上的旧名称。
git branch -m old_branch new_branch
git push --set-upstream origin new_branch:old_branch
现在,当您运行时git push
,远程old_branch
引用将使用local更新new_branch
。
您必须知道并记住此配置。但是,如果您没有选择远程分支名称,但又不喜欢它的话,它会很有用(哦,我的意思是,您有充分的理由不喜欢它!),并且希望使用一个更清晰的名称您当地分支机构的名称。
使用获取配置,您甚至可以重命名本地远程引用。即,具有refs/remote/origin/new_branch
指向分支的ref指针,实际上是old_branch
on origin
。但是,出于您的安全考虑,我强烈不建议这样做。
如果您愿意使用SourceTree(强烈建议使用),则可以右键单击分支并选择“重命名”。
另一种选择是根本不使用命令行。Git GUI客户端(例如SourceTree)消除了许多语法学习曲线/痛苦,这使诸如此类的问题成为Stack Overflow上最受欢迎的问题之一。
在SourceTree中,右键单击左侧“分支”窗格中的任何本地分支,然后选择“重命名...”。
由于您不想将分支推送到远程服务器,因此此示例将非常有用:
假设您有一个名为“ my-hot-feature”的分支,并且想要将其重命名为“ feature-15”。
首先,您要更改本地分支。这再简单不过了:
git branch -m my-hot-feature feature-15
有关更多信息,您可以访问Git中的本地和远程重命名分支。
可以使用以下命令完成Git分支的重命名:
git branch -m oldBranch newBranch
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$
您所要做的只是三个步骤: