【问题标题】:How do I revert `git fetch upstream; git merge upstream/master`? [duplicate]我如何恢复 `git fetch 上游; git 合并上游/master`? [复制]
【发布时间】:2013-05-01 05:05:53
【问题描述】:

这个问题与其他问题的不同之处在于,我想在恢复一些提交的同时保留一些提交。

这是我的设置。

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

现在我发现上游/master 有一个错误并想要恢复,
我如何回到最后一次获取/合并上游之前的状态?

编辑。

假设

  1. 我在上游合并了
  2. 我合并了团队成员推送到 origin/master(Personal) 的内容

现在我想撤消第 1 步。

git reset --hard commit_sha_of_one_prior_the_merge_1

(虽然找到sha并不容易。git log显示了很多commit sha的上游,所以不容易找到 commit-sha-of_one_prior_the_merge_1 不是 upstream 而是 origin/master)

如何保持第 2 步的合并?

假设一个稍微复杂的场景

  1. 我在上游合并
  2. 我合并了其他团队成员推送到个人的内容
  3. 我也将我的工作推送到个人

现在我想撤消上游合并。 我该怎么做?

【问题讨论】:

标签: git revert


【解决方案1】:

您可以使用以下命令将本地 master 分支重置为 origin/master 状态(如果您尚未将合并推送到 origin/master):

git reset --hard origin/master

如果这不可能,您可以使用 reflog :

git reflog

您可以查看undoing a git rebase了解更多详情

【讨论】:

  • 这与 OP 想要的相反。
【解决方案2】:

既然你有一个实际的合并提交——因为你一直在引入你自己的更改——你应该能够做到:

git reset --hard HEAD~1

假设您的最后一次提交是有问题的合并提交。

【讨论】:

  • 我的私人仓库中有其他提交,除了合并提交
猜你喜欢
  • 2019-04-11
  • 2018-08-30
  • 2018-02-09
  • 2017-07-14
  • 2020-03-04
  • 2015-07-13
  • 1970-01-01
  • 2017-03-28
  • 2021-12-27
相关资源
最近更新 更多