这个问题与其他问题不同之处在于,我希望在撤消某些提交的同时保留一些提交。
这是我的设置:
Upstream repo on github (public repo which I don't own)
Personal repo on my server(git clone --bare $upstream)
我的工作流程如下:
Need to customize my personal branch
1. check out origin/master(Personal)
2. make changes
3. push to origin/master
Need to get new feature or bug fix from the original author(github)
1. git fetch upstream
2. git merge upstream/master
现在我发现upstream/master有一个bug,想要回滚操作,如何回到上次fetch/merge upstream之前的状态?
编辑。
假设:
1. 我合并了upstream 2. 我合并了团队成员推送到origin/master(Personal)的内容
现在我想撤销步骤1。
解决方法:
git reset --hard commit_sha_of_one_prior_the_merge_1 (虽然找到sha不容易,因为git log显示很多upstream的commit sha,所以不容易找到commit-sha-of_one_prior_the_merge_1,它不是upstream而是origin/master的)
如何保留步骤2的合并?
假设场景更复杂一些:
1. 我合并了upstream 2. 我合并了另一个团队成员推送到Personal的内容 3. 我也推送了我的工作到Personal
现在我想撤销upstream的合并。
解决方法: