如何重命名本地 Git 分支?

问题描述:

如何重命名尚未推送到远程存储库的本地分支?

有关的:

重命名本地和远程 Git 存储库的主分支

如何重命名 Git 本地和远程分支名称?

解决方案1:

huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。

在指向任何分支时重命名分支:

git branch -m  

重命名当前分支:

git branch -m 

推送本地分支并重置上游分支:

git push origin -u 

要删除远程分支:

git push origin --delete 

记住这一点的一种方法是 -m 用于“移动”(或 mv),这是您重命名文件的方式。添加别名也可能有所帮助。为此,请运行以下命令:

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

如果你在 Windows 或其他不区分大小写的文件系统上,并且名称只有大小写变化,则需要使用 -M,否则,Git 会抛出 branch already exists 错误:

git branch -M 

@PandaWood:推送时会添加新分支,但不会删除旧分支。如果您使用 git push -f --mirror,那么它将重命名远程上的分支,但您应该仅在远程只是作为当前存储库的副本时使用此方法。另请参阅此问题:stackoverflow.com/questions/1526794/git-rename-remote-branch

@PandaWood,这取决于 push.default 的配置方式。默认情况下 (matching) 它将推送到名称匹配的远程。您必须执行 git push origin : 否则您将创建一个新的远程分支。但是,如果 push.default 设置为 upstream,那么您可以 push origin head 并且事情将转到遥控器上的旧名称。

-m 选项的长名称是 --move,例如,git branch --move master 将当前分支重命名为“master”。

有趣的是,重命名似乎暂时不区分大小写,即使在 OSX 上也是如此。从 FB12.show_hide_cols 开始,-m fb12.show_hide_cols 给我一个现有的分支错误。但是 -m fb12.show_hide_col,然后 -m fb12.show_hide_cols 将我带到了我想要的地方。之后, git branch 只显示一个重命名的分支,就像我想要的那样。

完成此操作后,您还应该运行 git push origin : 来更新您的远程分支名称。

解决方案2:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

git branch -m old_branch_name new_branch_name

上面的命令会改变你的分支名称,但是你必须非常小心地使用重命名的分支,因为它仍然会引用与之关联的旧上游分支(如果有的话)。

如果您想在本地分支重命名为 new_branch_name(示例名称)后将一些更改推送到 master:

git push origin new_branch_name:master(现在更改将转到主分支,但您的本地分支名称是 new_branch_name)

有关详细信息,请参阅“How to rename your local branch name in Git”。

解决方案3:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

要重命名当前分支:

git branch -m 

如果您只是更改大小写,则需要使用 -M 重命名,因为 git 会告诉您该分支已经存在。

然后git push origin HEAD:

解决方案4:

huntsbot.com – 高效赚钱,自由工作

以下是重命名分支的步骤:

切换到需要重命名的分支 git branch -m git push origin : git push origin :refs/heads/

编辑 (12/01/2017): 确保运行命令 git status 并检查新创建的分支是否指向它自己的 ref 而不是旧的。如果您找到对旧分支的引用,则需要使用以下命令取消设置上游:

git branch --unset-upstream

解释这些步骤:1 = 切换到分支本地,2 = 'move' 即'rename' 本地分支(-m),3 = 将'nothing' 推送到远程的旧分支目标(即删除对远程分支的引用) - 冒号左侧是“源”,右侧是“目标”,4 = 将引用(指针)推送到新分支,到远程

@Milind Anantwar,“检查新分支是否指向它自己的参考”是什么意思?您能否解释一下 git branch --unset-upstream 如何解决您所指的不同步条件?

解决方案5:

一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会

分支完成后,重命名分支将很有用。然后新的东西来了,你想在同一个分支中开发而不是删除它并创建新的。

根据我的经验,要在 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

This one 对我来说效果更好。这里的 2 个步骤给了我以下错误:error: dst ref refs/heads/ receives from more than one src.; error: failed to push some refs to 'git@uri:foo/bar.git'

您在运行命令 git push origin :old-name new-name 时遇到了问题,对吗?

解决方案6:

一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会

到目前为止的答案是正确的,但这里有一些额外的信息:

可以使用“-m”(移动)安全地重命名分支,但必须小心使用“-M”,因为它会强制重命名,即使已经存在同名的分支。以下是“git-branch”手册页的摘录:

使用 -m 或 -M 选项, 将被重命名为 。如果 有相应的 reflog,则将其重命名以匹配 ,并创建一个 reflog 条目以记住分支重命名。如果 存在,则必须使用 -M 来强制进行重命名。

它被新名称/分支覆盖。例如,如果您在 git 中有以下分支: master b1 <-- 在执行 'git branch -M b2' 之后,您将只有当前分支 b2:master b2 <-- 当前分支 b1 将消失,如果您愿意恢复它你应该通过它的哈希来检查它。您可以通过输入“git reflog”来查看它。干杯。

如果您只是更正分支名称的大小写,例如将 myBranch 更改为 MyBranch,-M 标志对于强制重命名也很有用。 (使用 -m,git 返回 fatal: A branch named 'MyBranch' already exists.)

解决方案7:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

1.重命名

如果它是您当前的分支,请执行

git branch -m new_name

如果它是您要重命名的另一个分支

git branch -m old_name new_name

  1. 跟踪一个新的远程分支

如果你的分支被推送,那么在重命名后你需要从远程 Git 存储库中删除它并要求你的新本地跟踪一个新的远程分支:

git push origin :old_name
git push --set-upstream origin new_name

解决方案8:

huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。

我愚蠢地命名了一个以连字符开头的分支,然后签出了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

同上。如果您必须深入研究目录结构才能做到这一点,请一路执行 'mv -- -dumb-name bright-name' 执行 'git branch -av' 你会看到一个目录结构.git/refs。或者也许 'grep -R ^ .git/refs' 可以直接查看哈希值。

老实说,如果那是您想要采取的路线,我会避免(如果您不知道自己在做什么,IMO 会令人困惑并且可能很危险)首先通过 .git 目录进行短途旅行,并且只需使用一些带有一些“git log”解析的普通命令(使用适当的标志来显示分支,并找出您要从中签出新分支的 shasum),然后执行此操作。然后,删除这个名字古怪的分支。我鄙视 git 坚持认为您需要了解其所有内部工作原理才能做一些事情,但非常感谢您可以做这些事情。

在 2.10.1+ 中创建一个名字不好的分支更难。如果你以某种方式这样做,你可以使用 git branch -v 来获取你的分支的短哈希版本(添加 -r 用于远程)。然后,如果需要,您可以使用 git rev-parse 来获取完整的哈希值。

您也可以使用 git show-ref 这将为您提供本地存储库中所有内容的长哈希。我的意思是一切……分支/藏匿处/标签……等等

当您不能checkout该名称但可以删除它时,我会认为它是 git 中的错误。

解决方案9:

与HuntsBot一起,探索全球自由职业机会–huntsbot.com

只需三个步骤即可在 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

我还必须做一件额外的事情:@Nomade 回答中提到的 git push --set-upstream origin new_branchname

@Dev 并非在所有情况下 Dev,我最近不得不更新,因为使用了 bitbucket 和 codecommit,第 3 步是必要的

解决方案10:

huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式

要在本地重命名分支:

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

现在,您还必须在远程服务器上传播这些更改。

推送已删除旧分支的更改:

git push origin :[old-branch]

推送创建新分支的更改:

git push origin [new-branch]

解决方案11:

huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。

试图具体回答问题(至少是标题)。

您也可以重命名本地分支,但继续跟踪远程上的旧名称。

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

现在,当您运行 git push 时,远程 old_branch 引用将更新为您的本地 new_branch。

您必须了解并记住此配置。但是,如果您无法选择远程分支名称,但您不喜欢它(哦,我的意思是,您有充分的理由不喜欢它!)并且更喜欢更清晰的名称,它会很有用您当地分支机构的名称。

使用 fetch 配置,您甚至可以重命名本地远程引用。即,有一个指向分支的refs/remote/origin/new_branch ref 指针,实际上就是origin 上的old_branch。但是,为了您的安全,我强烈反对这种做法。

原文链接:https://www.huntsbot.com/qa/ka2D/how-do-i-rename-a-local-git-branch?lang=zh_CN

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值