我做了3'git commit',但我没有做过'git push'。
1. commit 1
2. commit 2
touches fileA
touches fileB
touches fileC
3. commit 3
那我怎么能
答案 0 :(得分:5)
这应该有效:
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.解决后再次运行{/ 1}}。
答案 1 :(得分:2)
使用git rebase -i HEAD~2
并编辑第二次提交。
答案 2 :(得分:0)
假设你在分支主人身上且有一棵干净的树:
# 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>
答案 3 :(得分:0)
我就是这样做的。
签出旧版本的fileB并提交
git checkout HEAD~3 -- fileB
git commit -m"fix fileB" fileB
现在使用旧提交来修改你的修复
git rebase -i HEAD~3
现在将您最近的提交“修复文件B”移动到提交2之后,并将“选择”指令更改为“压缩”,加入提交更改文件B并重置提交。