拙劣的git fork与上游同步。怎么办?

时间:2015-11-03 05:16:31

标签: git github

我在github上用分支机构分割了一个项目someorg / greatproject:

* master
* dev
从我的fork开始,我创建了一个名为my-patch的dev分支。所以我/ greatproject有分支:

* master
* dev
* my-patch

我发送了拉取请求,补丁被接受并合并到dev中。大!一段时间后,上游开发分支得到了更多的更改,我想用上游重新同步我的分支。我遵循了一些指示(我已经失去了)一切看起来都没问题,所以我把同步的回购推回给了github。

我今天回来了,我发现我错误地将someorg的dev分支合并到我的my-patch分支中。更糟糕的是git branch只显示

*my-patch

我发现我可以查看原点/ dev,如果我按照这些说明操作 How do I update a GitHub forked repository?我也可以检查上游/ dev,但在这两种情况下都会让我进入一种称为分离头模式的东西,我猜这是坏的或错误的,或至少值得一些奇怪的警告。

我想回到我的fork看起来像原始的状态,以及我的补丁在分支my-patch上的开发历史。基本上,我得到的状态是我的叉子里的所有分支(除了我的补丁)与原始回购保持锁定步骤。

我如何到达那里?

1 个答案:

答案 0 :(得分:1)

让主分支(母版)保持最新并保持my branch不受影响的最简单方法是:

添加原始遥控器(您可能已经这样做了)

git remote add originalproject <git@github.com:someorg/greatproject.git>

本地主更新

git checkout master (if master is the main branch for the project)
git reset --hard originalproject/master

您的主分支与原始项目是最新的

如果您想将分支更新为通过拉取请求推送的版本,请执行

git checkout my-branch (if master is the main branch for the project)
git reset --hard originalproject/my-branch

但是你将失去当前的任何局部变化。您似乎已对本地副本进行了一些不可逆转的更改,因此最好的方法是删除fork并重新分叉,同时保持本地文件夹不变,以便您可以将最近执行的一些代码复制到新克隆