从上游获取并撤消我所有的原始提交

时间:2018-12-03 16:35:29

标签: git

我有一个上游项目的分支,它需要与上游的源代码完全对齐。 我已经发布了

git fetch upstream

因此,现在我已经从上游项目中获取了所有数据,但是当我提交更改时,我过去所做的较旧的提交会引起一些冲突。 据我了解,下一步,我应该:

git checkout master
git rebase upstream/master

对吗?还有什么更简单的方法来制作 origin = upstream ,销毁我在fork中所做的所有提交? (就像我现在分叉了上游项目一样) 谢谢

2 个答案:

答案 0 :(得分:1)

尝试以下命令:

git branch --create-reflog -f master -t upstream/master

确保您不在主服务器上(您在另一个分支上),否则它将失败。

如果您是主用户,则可以使用reset

git reset --hard upstream/master

如果您有未提交的更改,请确保git stash进行更改,否则它们将丢失。您可以在执行硬重置后执行git stash pop,以还原未提交的更改。

答案 1 :(得分:1)

(1)查找最近的派生点提交

git merge-base upstream/master origin/master

例如,结果为55c16639a7a7a8c474b9aa448ab112086738de6f或简称为55c1663

(2)将原始来源重置为55c1663

git reset --hard 55c1663

(3)提取并合并

git fetch upstream
git checkout master
git merge upstream/master --no-ff

https://help.github.com/articles/syncing-a-fork/上查看更多信息