2014-04-28 22 views
2

我不是一个混帐专家,所以这可能看起来像一个愚蠢的问题。与远程同步本地git回购一次抛弃本地更改/提交

我有本地和远程存储库,我想同步我的本地与远程存储库。我有许多本地更改,存储了更改,还有很少的提交还没有推送到远程。

一种方法可以是删除所有本地更改(使用git clean),从远程还原提交并从以上。但我认为必须有一个能够一次完成所有这些工作的单一命令。我尝试使用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

您可以使用FractalSpace的答案中的步骤http://stackoverflow.com/questions/6373277/git-sync-local-repo-with-remote-one并将它们放在脚本中 –

+0

如果您想要设置你的主分支与远程主分支相同,你可以尝试“git reset --hard origin/master” –

回答

3

正如评论,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) 
0
git fetch -[options] 

结账的顶部:

git fetch --help 

您可以使用的功能使用