这个问题与其他问题的不同之处在于,我希望在恢复一些提交时保留一些提交.
这是我的设置.
Upstream repo on github (public repo which I don't own)
Personal repo on my server(git clone --bare $upstream)
Run Code Online (Sandbox Code Playgroud)
我的工作流程是这样的:
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
Run Code Online (Sandbox Code Playgroud)
现在我发现upstream/master有一个bug并且想要恢复,
如何在我最后一次获取/合并上游之前返回状态?
编辑.
假设
- 我上游合并了
- 我将团队成员推送到origin/master(个人)的内容合并
现在我要撤消第1步.
git reset --hard commit_sha_of_one_prior_the_merge_1
(虽然找到啥是不容易的.git的日志显示了很多承诺的上游沙的,所以这是不容易找到犯-SHA-of_one_prior_the_merge_1这是不是
upstream而是origin/master)
如何保持第2步合并?
假设一个稍微复杂的场景
- 我上游合并了
- 我合并了另一个团队成员推送到Personal的内容
- 我也将我的工作推向了个人
现在我想撤消上游合并.我该怎么做?
cex*_*yat -1
您可以使用以下命令将本地master分支重置为origin/master状态(如果您尚未将合并推送到origin/master):
git reset --hard origin/master
Run Code Online (Sandbox Code Playgroud)
如果不可能,您可以使用 reflog :
git reflog
Run Code Online (Sandbox Code Playgroud)
您可以查看撤消 git rebase了解更多详细信息
| 归档时间: |
|
| 查看次数: |
5909 次 |
| 最近记录: |