GitHub fork:从原始仓库获取所有更改

3

昨天我第一次在github上进行了fork操作。

我修改了一些内容,然后向原始仓库发起了拉取请求。

后来我发现自己做错了,现在我想将我的fork与原始仓库同步,以便删除我所做的所有更改(创建新文件,修改某些文件等)。

我尝试使用

git fetch upstream git merge upstream/master

这样可以将此期间原始仓库中所做的更改同步到我的fork,但我所做的更改仍然存在于我的fork中

我希望我的仓库与原始仓库相同。

1个回答

5

您可以通过将远程仓库添加到原始仓库中,从那里获取数据,将您的分支重置为匹配已拉取的分支,然后强制推送分支到您的分叉来修复您的分叉。

假设您的分叉仓库由origin表示,这里是一个以master作为您唯一拥有的分支的示例:

git remote add upstream http://github.com/original.git
git fetch upstream
git reset --hard upstream/master
git push -f origin master

现在主分支将在两个仓库中都存在。当您执行合并操作时,如果您的一侧没有任何更改,则会将引用向前移动(称为快进式合并),否则,如果两侧都有更改,则会创建一个新提交。如果您想要丢弃自己的提交记录而不是合并,则应该使用Reset命令。
如果您希望将其他分支重置回到初始仓库的状态,而无需检出它们,则可以使用以下命令:
git push -f . upstream/feature1:feature1
git push -f origin feature1

. 表示在同一仓库中进行推送。这是一种聪明的方式,可以移动分支指针而无需检出该分支。push 中的冒号语法表示 <source>:<destination>。如果省略了 :<destination>,它意味着相同的名称,这就是为什么你不经常看到 push 示例中使用该语法的原因。一个更常见的例子是将本地分支推送到具有不同名称的远程分支:git push origin myexperiment:dev 将更新远程 dev 分支以指向 myexperiment。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接