[英]how to roll back changes in a file in a previous commit in git
我做了3个'git commit',但是我没有做过'git push'。
1. commit 1
2. commit 2
touches fileA
touches fileB
touches fileC
3. commit 3
那我该怎么办
这应该工作:
1. git rebase -i HEAD~2
2. in your editor, select the following:
edit 9b86592 commit 2
pick f3907cb commit 3
3. at this point roll back the changes you made in fileB, for example with
`git checkout <version_you_want>` or by manually editing the file
4. make the changes in fileC you want to be part of commit 2
5. `git add fileB fileC`
6. `git commit --amend`
7. `git rebase --continue`
如果git尝试应用提交3时发生冲突,则可能需要解决合并问题。解决这些问题后, git rebase --continue
再次运行git rebase --continue
。
使用git rebase -i HEAD~2
并编辑第二个提交。
假设您在分支主服务器上并且有一棵干净的树:
# checkout incorrect commit
git checkout <sha1_of_commit2>
# revert the changes to fileB by checking out the parent version
git checkout HEAD^ -- fileB
# make an amended commit
git commit --amend
# go back to master
git checkout master
# transplant the changes since the bad commit onto the amended commit
git rebase --onto HEAD@{1} <sha1_of_commit2>
这就是我要做的。
检出旧版本的fileB并提交
git checkout HEAD~3 -- fileB
git commit -m"fix fileB" fileB
现在使用旧的提交重新定位到您的修复程序中
git rebase -i HEAD~3
现在将您最近的提交“ fix fileB”移到提交2之后,并将“ pick”指令更改为“ squash”,将提交更改的fileB与重新设置的提交一起加入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.