2013-06-27 85 views
14

有一些我不明白的GIT拉動作。 我有一個foobar git倉庫有兩個文件:名爲f1和f2。所有的 首先,我會克隆使用此命令此回購:GIT pull:用遠程版本替換本地版本

git clone [email protected]:foobar/foobar.git 

我使雙方f1和f2文件上的一些錯誤的修改,將它們添加到Git的索引並提交即可。

git add -A 
git commit -m 'a test wrong modification' 

我決定現在這個修改是錯誤的,我想用遠程版本替換我的文件。所以我使用git pull來執行此操作:

git pull 

Already up-to-date. 

GIT回答說項目已經是最新的。有人可以幫助我嗎?那有什麼問題?我應該如何繼續使用遠程版本替換我的本地版本?謝謝,本。

回答

32
git fetch origin 
git reset --hard origin/master 

這裏是關於GIT中很好的解釋拉git pull

git fetch命令導入承諾從遠程倉庫到你的本地回購。結果提交存儲爲遠程分支,而不是我們一直在使用的正常本地分支。這使您有機會在將修改集成到您的項目副本之前審查更改。

命令git pull <remote>獲取當前分支的指定遠程副本並立即將其合併到本地副本中。這與git fetch <remote>之後是git merge origin/<current-branch>相同。由於它正在合併您的提交仍然存在。

做完fetch之後,您可以使用重置命令重置您的工作副本。 Hard將忽略本地副本中的任何更改。 git reset --hard origin/master

+3

你是對的(儘管如果所有的改變已經在本地已經可用,第一個沒有必要),但是如果你解釋這些命令做了什麼,它可能會幫助OP。 – hvd

+1

添加了對問題的解釋 – Tala

+0

如果我們想要替換特定文件而不是來自orgin/master的所有文件,該怎麼辦? –

3

拉主要是爲了與當地的一個合併遠程存儲庫。簡短的回答是你的git設置沒有問題,因爲你的最新遠程更改已經存在於你的本地存儲庫中。如果其他人將更改推送到遠程存儲庫,那麼拉來時很方便。完成拉動後,這些更改將被拉到併合併到您的本地存儲庫中。

相關問題