这个问题与其他问题的不同之处在于,我希望在恢复一些提交时保留一些提交。
这是我的设置。
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
现在我发现上游/主人有一个错误,想要恢复,
在上次获取/合并上游之前,如何返回状态?
编辑。
假设
- 我合并上游
- 我合并了团队成员推送到origin / master(个人)
的内容 醇>
现在我要撤消第1步。
git reset --hard commit_sha_of_one_prior_the_merge_1
(虽然找到sha并不容易.git log显示了很多提交 上游的沙漠,所以不容易找到 commit-sha-of_one_prior_the_merge_1不是
upstream
而是origin/master
{{1}})
如何保持第2步合并?
假设一个稍微复杂的场景
- 我合并上游
- 我合并了另一个团队成员推送到个人
的内容- 我还将我的工作推向个人
醇>
现在我要撤消上游合并。 我该怎么办?
答案 0 :(得分:2)
由于您有实际的合并提交 - 因为您已经引入了自己的更改 - 您应该可以这样做:
git reset --hard HEAD~1
假设您的上一次提交是有问题的合并提交。
答案 1 :(得分:-1)
您可以将本地master
分支机构重置为origin/master
状态(如果您尚未将合并推送至origin/master
):
git reset --hard origin/master
如果不可能,您可以使用reflog:
git reflog
您可以查看undoing a git rebase了解详情