git:重置为分叉存储库

时间:2017-10-31 11:37:50

标签: git git-reset git-fork

我在我的本地命名空间中分叉了一个存储库(它有一个master分支)。

从那时起,我在master之上有几个提交,我还有一个额外的分支(test-branch)。

我想要表现的是:

  • master分支回滚到我分叉回购时的状态
  • 按原样维护test-branch

解决此问题的一种可能方法是结帐master,查看日志历史记录,找到最后一次提交的sha并执行git reset <sha_of_last_commit_of_forked_repo>

还有另一种方法吗?

fyi我已经配置了两个remotesoriginupstream(上游是我分配的回复,push)。

2 个答案:

答案 0 :(得分:1)

您可以使用上游主人硬重置本地。

$ git checkout master

$ git fetch upstream                 # update local upstream history but not merged with working tree
$ git reset --hard upstream/master   # replace local 'master' history = upstream/master history

现在,您可以从test-branch创建并结帐到新分支master

$ git checkout -b test-branch

答案 1 :(得分:1)

你提到上游已经发展了。你也说没关系,但只是让你了解这些选项:

您可以找到上次将上游的更改集成到您的代码中 - 这可能是您最初进行分支时(即,如果您没有合并其他上游更改或重新设置您的工作)。< / p>

git merge-base master upstream/master

然后您可以重置为该命令的结果

git reset --hard `git merge-base master upstream/master`

如果您已经重新定义了您的工作或合并了其他更改,那么您可能已经达到了git并不能跟踪&#34;原&#34;你的叉子的状态了;它并不是git认为重要的东西,因为就git而言,你的fork只是上游的另一个克隆。

因此,为了将来参考,如果您创建一个fork,并且您认为您可能稍后需要引用&#34;当我分叉&#34;时最后一个上游提交,您应该标记它。