GitLab 重命名分支并重新开始另一个

Posted

技术标签:

【中文标题】GitLab 重命名分支并重新开始另一个【英文标题】:GitLab rename branch and start over on another 【发布时间】:2016-05-09 05:24:41 【问题描述】:

我刚开始一个新项目,我正在使用带有 SourceTree 的 GitLab。我已经创建了一个分支 (origin\master),但是我错误地使用了这个分支进行开发,所以我将最初的一些更改推送到了这个分支。现在我了解到这个分支实际上应该有生产版本,并且应该使用 origin\develop 分支进行开发。

有什么方法可以将 master 分支重命名为 origin\develop 并以某种方式使用应用程序的原始版本创建一个新的 origin\master 分支?

我是项目中唯一的开发人员,因此不会影响任何人。如果可能的话,如果你能解释一下如何在 SourceTree 中做到这一点,因为我不使用命令行 git。我对 SourceTree 比较熟悉。

【问题讨论】:

也许以后你会发现你实际上做了正确的事——在master上工作。谷歌基于主干的开发和持续交付原则:) linuxize.com/post/how-to-rename-local-and-remote-git-branch 看看这个重命名分支 【参考方案1】:

你可以试试这样的。

git branch -m <old_branch_name> <new_branch_name>

【讨论】:

【参考方案2】:

解决此问题的最简单方法是还原提交。如果这是最后一次提交,您可以通过执行以下操作来解决此问题:

$ git revert HEAD

如何在源代码树中执行此操作如下:

http://flummox-engineering.blogspot.com/2014/10/how-to-undo-git-commit-in-sourcetree.html

现在,在您推送到错误的存储库之前,一切都应该恢复正常。

【讨论】:

【参考方案3】:

SourceTree 2.0.20.1 版的指令

    在“BRANCHES”下重命名本地分支 右键单击分支并选择“重命名您的分支的名称” 删除“REMOTES”下的远程分支 右键单击分支并选择“删除来源/分支名称” 将重命名的本地分支推送到 GitLab 左键点击你重命名的本地分支 点击功能区栏上的“推送”按钮

【讨论】:

称赞实际解决 SourceTree,如原始问题中所要求的那样。 虽然风险很大.. 如果有任何事情发生,您的进度就会丢失。我宁愿: 1. 从现有分支本地创建一个新分支(只需单击顶部菜单栏中的分支)-> 为其命名,将新分支推送到远程,上传后删除本地旧分支并打开遥控器【参考方案4】:

你可以试试这样的。答案从 this great answer 修改,以满足 OP 的需求。

git branch -m master develop    # rename master on local
git push origin :master         # delete master on remote
git push origin develop         # create develop on remote
git checkout -b master develop  # create a new local master on top of develop
git push origin master          # create master on remote

【讨论】:

不应该 git checkout -b master developgit checkout -b master &lt;commit&gt;,其中 是最初在 master 上的最后一次提交? 是的,如果 OP 知道这些细节,那就太好了! 我不知道我可以像那样删除遥控器上的分支 - 太好了!我只是想重命名一个我已经推出的开发分支,并且使用前 3 个步骤(使用我的开发分支名称)效果很好! OP 明确表示他的“主人”应该反映“应用程序的原始版本”,这意味着他知道这是什么提交 - 或者甚至可能是他的存储库中的第一次提交。所以我认为你应该加强你的答案(否则很好!)不要在“开发”之上重新创建主 - 而是在另一个提交或分支之上。

以上是关于GitLab 重命名分支并重新开始另一个的主要内容,如果未能解决你的问题,请参考以下文章

git:重命名本地分支失败

重命名主分支并创建一个新的空主

重命名TortoiseHG中的默认分支

在 Gitkraken 中重命名分支?

如何重命名 SVN 分支并更新现有沙箱中的引用?

git push重命名分支