2014-04-28 150 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 

您可以使用的功能使用