首先,您需要将更改移动到分支:例如,这是您的原始日志
#git log --graph --decorate --oneline -n13
* e40f865 (HEAD, master) Change 2
* 120c061 Change 1
* 73a8f97 Initial commit
现在将它们移动到一个分支中:
#git branch changeA 120c061
#git branch changeB e40f865
#git log --graph --decorate --oneline -n13
* e40f865 (HEAD, master, changeB) Change 2
* 120c061 (changeA) Change 1
* 73a8f97 Initial commit
如您所见,changeB 依赖于changeA。现在重置主节点,以便更改不在主节点中,而是在分支中:
#git reset --hard HEAD~2
HEAD is now at 73a8f97 Initial commit
现在,检查 changeA 并让你改变。修改后的提交:
#git commit --amend -a
[changeA 93837a4] Change 1
2 files changed, 3 insertions(+), 2 deletions(-)
#git log --graph --decorate --oneline -n13
* 93837a4 (HEAD, changeA) Change 1
* 73a8f97 (master) Initial commit
如您所见,更改 1 有一个新的 SHA1,接下来检查更改 B:
#git checkout changeB
Switched to branch 'changeB'
#git log --graph --decorate --oneline -n13
* e40f865 (HEAD, changeB) Change 2
* 120c061 Change 1
* 73a8f97 (master) Initial commit
现在您看到 changeB 仍然依赖于原始更改 1,您只需要将更改重新设置为新的更改 1。
#git rebase 93837a4
First, rewinding head to replay your work on top of it...
Applying: Change 1
Using index info to reconstruct a base tree...
....
....
Applying: Change 2
#git log --graph --decorate --oneline -n13
* d3fac58 (HEAD, changeB) Change 2
* 93837a4 (changeA) Change 1
* 73a8f97 (master) Initial commit
现在您有了依赖于更新 changeB 的更新 changeB,您可以再次将其提交给 Gerrit 进行审核