昨天我第一次在github上进行了fork操作。
我修改了一些内容,然后向原始仓库发起了拉取请求。
后来我发现自己做错了,现在我想将我的fork与原始仓库同步,以便删除我所做的所有更改(创建新文件,修改某些文件等)。
我尝试使用
git fetch upstream git merge upstream/master
这样可以将此期间原始仓库中所做的更改同步到我的fork,但我所做的更改仍然存在于我的fork中!
我希望我的仓库与原始仓库相同。
昨天我第一次在github上进行了fork操作。
我修改了一些内容,然后向原始仓库发起了拉取请求。
后来我发现自己做错了,现在我想将我的fork与原始仓库同步,以便删除我所做的所有更改(创建新文件,修改某些文件等)。
我尝试使用
git fetch upstream git merge upstream/master
这样可以将此期间原始仓库中所做的更改同步到我的fork,但我所做的更改仍然存在于我的fork中!
我希望我的仓库与原始仓库相同。
您可以通过将远程仓库添加到原始仓库中,从那里获取数据,将您的分支重置为匹配已拉取的分支,然后强制推送分支到您的分叉来修复您的分叉。
假设您的分叉仓库由origin表示,这里是一个以master作为您唯一拥有的分支的示例:
git remote add upstream http://github.com/original.git
git fetch upstream
git reset --hard upstream/master
git push -f origin master
git push -f . upstream/feature1:feature1
git push -f origin feature1
.
表示在同一仓库中进行推送。这是一种聪明的方式,可以移动分支指针而无需检出该分支。push 中的冒号语法表示 <source>:<destination>
。如果省略了 :<destination>
,它意味着相同的名称,这就是为什么你不经常看到 push 示例中使用该语法的原因。一个更常见的例子是将本地分支推送到具有不同名称的远程分支:git push origin myexperiment:dev
将更新远程 dev 分支以指向 myexperiment。