昨天我在github上做了第一个分叉。
我修改了一些内容,然后向原始仓库发出拉取请求。
然后我发现我做错了什么,现在我想将我的fork同步到原始仓库,这样我所做的所有更改(创建新文件,修改了一些......)都将被删除。
我试过
git fetch upstream git merge upstream / master
同时对原始仓库进行的更改会同步到我的前叉,但我做的更改仍然在我的叉子中!
我希望我的回购与原版回购相同。
答案 0 :(得分:4)
你可以通过在原始仓库中添加一个遥控器来修复你的前叉,从那里取出,重置你的分支以匹配拉动的分支,然后强制将分支推到你的分叉。
假设您的分叉回购以原点表示,这是一个以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
.
表示在同一个回购中推送。这是一种移动分支指针而不必检查分支的聪明方法。推送中的冒号语法表示<source>:<destination>
。如果省略:<destination>
,则它意味着相同的名称,这就是您不经常看到推送示例的语法的原因。一个更常见的示例是当您将本地分支推送到具有不同名称的远程分支时:git push origin myexperiment:dev
会将远程上的dev分支更新为myexperiment指向的内容。