我不是一个专家,所以这可能看起来像一个愚蠢的问题。
我有本地和远程存储库,我想将本地与远程存储库同步。我有许多本地更改,存储更改,以及几个尚未推送到远程的提交。
一种方法是删除所有本地更改(使用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.
同时关注this question,但没有帮助。
答案 0 :(得分:4)
如评论所述,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
这样,您可以在更新的主文件
之上重新定义本地提交x--x--x--x--x (master, origin/master) x--x--x--x--x--y'--y' (tmp, master)
\ =>
y--y (tmp) (after rebase+merge)
答案 1 :(得分:0)
如果您始终想在遥控器上创建新分支以镜像和跟踪本地分支(反之亦然),则永久性修复方法是:
git config --global push.default current
在执行git clone之后,我总是使用此命令配置本地git。尽管可以随时在本地远程分支“ Git致命:当前分支没有上游分支” 时应用此错误。
希望这会有所帮助。太和平了。 :)
答案 2 :(得分:-3)
git fetch -[options]
结帐:
git fetch --help
了解您可以使用的功能