2017-07-20 305 views
1

我有一個名爲masterdev的分支。遠程和本地git存儲庫

我做了一些提交到該分支,所以它可能是提前10從服務器上的masterdev提交。但實際上這些提交不再好,所以我不想推它們。

我可以恢復或rebase可能會得到我在這些承諾做的相反。但是,我認爲這看起來不太清楚。

所以我想要做的就是獲得與git pull origin masterdev相同的行爲,如果masterdev落後的話。

我想消滅我的本地masterdev以獲得與服務器上相同的結果。

+1

您可以簡單地執行git reset。 – ShellZero

+0

[重置本地存儲庫分支可能與遠程存儲庫HEAD類似](https://stackoverflow.com/questions/1628088/reset-local-repository-branch-to-be-just-like-remote-repository-頭) – ob1

回答

2

我想你想要的是 - 這會重置你的本地版本的masterdev,刪除你的提交。然後你拉動以確保你是最新的。

git reset --hard origin/masterdev 

git pull origin masterdev 
+1

這個答案也是正確的,並且O/P應該感覺相當舒適。 – torek

+0

我剛做了一個測試,那正是我所期待的。感謝您的幫助。但看起來git pull在那之後毫無用處。如果沒有什麼更多要拉動的話。 – Minirock

+0

「當然,如果沒有什麼可以拉動的話」是的。這條線對於解決你的問題並不是絕對必要的,但它可能是一個很好的習慣,因爲它有助於防止合併衝突。 –

2

如果你有什麼值得保存在索引和工作樹,一個簡單的git reset --hard就足夠了:

$ git status 
On branch masterdev 
Your branch is ahead of 'origin/masterdev' by 10 commits. 
    (use "git push" to publish your local commits) 
nothing to commit, working tree clean 
$ git fetch origin 
... [snip] 
$ git reset --hard origin/masterdev 

如果你有一些工作來保存,你應該提交它做一些事情比簡單的git reset --hard更復雜。

(中間git fetch步驟可之前或之後git status運行,雖然數量提交提前和/或後面可能因此而改變。我建議避免一般git pull,你不會需要它這個案件)。

0

git reset --hard origin/masterdev應該做的伎倆。那麼你可以簡單地做git pull origin masterdev

+1

'HEAD ^'假定只有一個提交丟棄。 ('HEAD'本身不丟棄任何提交 - 如果提交的數量正確,你會希望'HEAD〜10',但更簡單的方法是運行'git fetch'來更新origin/masterdev',然後使用那直接。) – torek

+0

對。我的錯。謝謝。更新它。 :) – ShellZero

0

簡單,只需git checkout --track origin/master。將爲您在本地創建分支,並且與遠程版本完全一樣

相關問題