我如何将我最近的承诺转移到一个新的分支机构,并在这些承诺完成之前重新定义主? 例如:
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
当前回答
这里的大多数解决方案计算了你想回去的承诺数量,我认为这是一个错误的方法,计算需要计算。
你可以简单地通过你想要的承诺的承诺,或者换句话说,你想要的承诺是最后的承诺:
(重定向自Commit Hash)
为了避免这一点:
1) git checkout master
2) git branch <feature branch> master
3) git reset --hard <commit hash>
4) git push -f origin master
其他回答
要做到这一点,而不重写历史(即如果您已经推出了承诺):
git checkout master
git revert <commitID(s)>
git checkout -b new-branch
git cherry-pick <commitID(s)>
那么,两支分支都可以在没有武力的情况下被推动!
我怎么能离开这
A - B - C - D - E
|
master
到此?
A - B - C - D - E
| |
master newbranch
兩個命令
吉特分支 -m 主新分支
给予
A - B - C - D - E
|
newbranch
和
吉特分支大师B
给予
A - B - C - D - E
| |
master newbranch
如果你是像我这样的人,你正在使用Visual Studio,那么你可以这样做:在我的情况下,我想把最新的承诺交给另一个分支。
右键单击前一个(委托)。
此分類上一篇
因此,所有承诺变更将出现在 Git 变更板上。
此分類上一篇
到您的目标分支或从右下角创建一个新的分支。
此分類上一篇
在“Git Changes”中,双击您的最新 Stash. “Stash details” 面板将被打开. 点击“Pop”,然后解决冲突(如果存在)。
此分類上一篇
最后,做你的改变。
只有在这种情况下:
Branch one: A B C D E F J L M
\ (Merge)
Branch two: G I K N
我表演了:
git branch newbranch
git reset --hard HEAD~8
git checkout newbranch
我希望承诺我会成为头,但承诺是现在的。
要确保在历史上登上正确的位置,就更容易与承诺的哈希工作。
git branch newbranch
git reset --hard #########
git checkout newbranch
这不是在技术上“移动”它们,但它有相同的效果:
A--B--C (branch-foo)
\ ^-- I wanted them here!
\
D--E--F--G (branch-bar)
^--^--^-- Opps wrong branch!
While on branch-bar:
$ git reset --hard D # remember the SHAs for E, F, G (or E and G for a range)
A--B--C (branch-foo)
\
\
D-(E--F--G) detached
^-- (branch-bar)
Switch to branch-foo
$ git cherry-pick E..G
A--B--C--E'--F'--G' (branch-foo)
\ E--F--G detached (This can be ignored)
\ /
D--H--I (branch-bar)
Now you won't need to worry about the detached branch because it is basically
like they are in the trash can waiting for the day it gets garbage collected.
Eventually some time in the far future it will look like:
A--B--C--E'--F'--G'--L--M--N--... (branch-foo)
\
\
D--H--I--J--K--.... (branch-bar)