我如何将我最近的承诺转移到一个新的分支机构,并在这些承诺完成之前重新定义主? 例如:
master A - B - C - D - E
为此:
newbranch C - D - E
/
master A - B
我如何将我最近的承诺转移到一个新的分支机构,并在这些承诺完成之前重新定义主? 例如:
master A - B - C - D - E
为此:
newbranch C - D - E
/
master A - B
当前回答
1) 创建一个新的分支,将所有更改转移到 new_branch。
git checkout -b new_branch
(二)然后回到旧的分支。
git checkout master
3、做吉·雷巴斯
git rebase -i <short-hash-of-B-commit>
4) 然后打开的编辑器包含最后3个承诺信息。
...
pick <C's hash> C
pick <D's hash> D
pick <E's hash> E
...
5) 更改选项下载所有这些 3 任务. 然后保存并关闭编辑器。
...
drop <C's hash> C
drop <D's hash> D
drop <E's hash> E
...
6) 现在最后3个命令从当前分支(主)中移除。 现在强烈推分支,在分支名称之前 + 标志。
git push origin +master
其他回答
这里的大多数解决方案计算了你想回去的承诺数量,我认为这是一个错误的方法,计算需要计算。
你可以简单地通过你想要的承诺的承诺,或者换句话说,你想要的承诺是最后的承诺:
(重定向自Commit Hash)
为了避免这一点:
1) git checkout master
2) git branch <feature branch> master
3) git reset --hard <commit hash>
4) git push -f origin master
1) 创建一个新的分支,将所有更改转移到 new_branch。
git checkout -b new_branch
(二)然后回到旧的分支。
git checkout master
3、做吉·雷巴斯
git rebase -i <short-hash-of-B-commit>
4) 然后打开的编辑器包含最后3个承诺信息。
...
pick <C's hash> C
pick <D's hash> D
pick <E's hash> E
...
5) 更改选项下载所有这些 3 任务. 然后保存并关闭编辑器。
...
drop <C's hash> C
drop <D's hash> D
drop <E's hash> E
...
6) 现在最后3个命令从当前分支(主)中移除。 现在强烈推分支,在分支名称之前 + 标志。
git push origin +master
还有另一种方法来做到这一点,只使用2个命令,同时保持您的当前工作树无缝。
git checkout -b newbranch # switch to a new branch
git branch -f master HEAD~3 # make master point to some older commit
旧版本 - 在我学到 git branch -f 之前
git checkout -b newbranch # switch to a new branch
git push . +HEAD~3:master # make master point to some older commit
能夠推到. 是一個好技巧知道。
如果你是像我这样的人,你正在使用Visual Studio,那么你可以这样做:在我的情况下,我想把最新的承诺交给另一个分支。
右键单击前一个(委托)。
此分類上一篇
因此,所有承诺变更将出现在 Git 变更板上。
此分類上一篇
到您的目标分支或从右下角创建一个新的分支。
此分類上一篇
在“Git Changes”中,双击您的最新 Stash. “Stash details” 面板将被打开. 点击“Pop”,然后解决冲突(如果存在)。
此分類上一篇
最后,做你的改变。
使用Emacs' git porcelain Magit,您可以通过击中b s(magit-branch-spinoff)。您将被要求为您的新分支输入一个名称,一旦您击中,voila。
《魔法文档》:
这个命令创建并检查一个新的分支开始并跟踪当前分支. 该分支反过来重新设置到最后一个分支它与其上流共享. 如果当前分支没有上流或没有不冲动的分支,那么新的分支是创建的任何情况下,以前的当前分支没有被触摸。