一键将本地git repo与远程同步,放弃本地更改/提交

Sau*_*abh 3 git version-control

我不是git专家,所以这看起来像是一个愚蠢的问题。

我有本地和远程存储库,我想将本地与远程存储库同步。我有许多本地更改,隐藏的更改,还有一些尚未推送到远程的提交。

一种方法是删除所有本地更改(使用git clean),还原提交,然后fetch/pull从远程删除。但是我认为必须有一些命令可以一次性完成所有这些操作。我尝试使用git reset --hard HEAD,然后git pull给了我:

# Your branch and 'origin/master' have diverged,
# and have 1 and 9 different commits each, respectively.
Run Code Online (Sandbox Code Playgroud)

也在看这个问题,但是没有帮助。

Von*_*onC 5

如前所述,a git reset --hard origin/master会将您重置master为上游。

但是:您当前的母版(及其本地提交)将“丢失”(至少不再可见)。

所以一个步骤是不是最好的方法。

我建议类似的东西:

git checkout master
git fetch origin
git branch tmp
git reset --hard origin/master
git checkout tmp
git rebase master
git checkout master
git merge tmp
git branch -d tmp
Run Code Online (Sandbox Code Playgroud)

这样,您可以在更新的主数据库基础上重新构建本地提交

x--x--x--x--x (master, origin/master)       x--x--x--x--x--y'--y' (tmp, master)
       \                                 =>
        y--y  (tmp)                           (after rebase+merge)
Run Code Online (Sandbox Code Playgroud)