30

我们发现自己处于master有新功能工作的情况,而feature1(从 master 分支)是稳定的 master。我们怎样才能改变事物,使它们“交换位置”?即,feature1 成为 master,master 成为newfeaturebranch

我发现了几个类似的 SO 问题,但在这些情况下,他们不再关心旧的主提交。在这里,我们希望将当前 master 保留为新的 newfeaturebranch。

我想到了一种方法来做到这一点:

  1. 从当前 master创建newfeaturebranch 。
  2. 从master恢复/删除提交到feature1的分支点。
  3. 将 feature1合并到master中。
  4. 删除分支feature1
4

3 回答 3

41

您可以重命名分支:

git branch -m master newfeaturebranch
git branch -m feature1 master
于 2013-06-19T19:53:03.470 回答
4

我从 poke 的解决方案开始,但是在 push 之后,本地分支仍在跟踪旧的远程分支。为了跟踪正确的分支,我只需要添加-u推送选项。

git branch -m master newfeaturebranch
git branch -m feature1 master

git push -uf origin master
git push -u origin newfeaturebranch

也可以分两步完成,首先推送然后调整正确的分支以进行跟踪

git push -f origin master
git push origin newfeaturebranch

git branch -u origin/master master
git branch -u origin/newfeaturebranch newfeaturebranch
于 2019-06-19T08:30:02.540 回答
0

编辑:这篇文章是在您编辑问题之前写的,当时您说您只想“交易地点”。如果您不需要保留名称,Poke 的解决方案就足够了。


您需要第三个分支tmp,就像在编程中交换变量一样:

  • git checkout -b tmp master:打开tmp从创建的新分支master
  • git branch -D master: 删除分支master
  • git checkout -b master feature1: 重新master创建feature1
  • git branch -D feature1: 删除分支feature1
  • git checkout -b feature1 tmp: recreate newfeaturebranchfrom tmp(这是master最开始的地方)
于 2013-06-19T19:51:14.007 回答