在git中共享共享提交中的编辑

时间:2015-12-13 16:11:35

标签: git sharing rebase git-rebase updating

Git允许您使用git rebase -interactive编辑分支的历史记录。您可以编辑一些提交,这也值得为其他分支更新。你如何更新另一个分支?

例如,我有两个分支A = Root <- A1 <- A2 <-A3和B = Root <- B2 <- B3。现在,我首先以交互方式编辑,更新Root => Root1。如何将分支B重新绑定到Root1而不是Root,如何告诉它Root1是Root的新版本?我问,因为将B改为B根承诺保持在Roo1之上。当然,这不是我想要的。

以下是重现情况的代码

mkdir shared_commit_update ; cd shared_commit_update

git init; git checkout -b Init ; echo iii > init ; git add init ; git commit -m init ; 

git checkout -b Root ; echo rrr > root ; git add root ; git commit -m root

git checkout -b Top ; echo toptop > top ; git add top ; git commit -m top

git checkout Root ; git checkout -b UpdatedRoot ; echo 222 > root ; git add root ; git commit --amend -m updated_root

git checkout Top ; echo Try to replace tops root with updated root ; gitk --all & 
bash

echo 'shared_commit_update' folder created

我希望Top提交位于UpdatedRoot一个。如果我只是git rebase UpdatedRoot,我会UpdatedRoot位于Root的顶部而非代替它。

2 个答案:

答案 0 :(得分:0)

切换到分支B(即git rebase -i [hash of Root1])。然后,使用提交Root1的哈希值(即ul li

进行重新定义

答案 1 :(得分:0)

关键是使用--onto option。我用

实现了目标
 git rebase --onto UpdatedRoot Root Top

它将从Root分离Top并将其移植到UpdatedRoot之上。