2012-07-21 31 views
3

我有一個本地存儲庫,我從遠程存儲庫中克隆(全部在一臺機器上)。我想確保我的遠程存儲庫從我的本地存儲庫中選擇了更改,所以我做了一個git push origin爲什麼我需要強制git同步我的遠程存儲庫?

我將工作目錄更改爲遠程存儲庫;更改已傳播到日誌文件(即,git log顯示更改),但我的實際工作目錄未顯示更改。我做了一個git checkout HEAD,但CWD仍然沒有改變。直到我做了git checkout --force HEAD CWD同步。

我懷疑這是因爲遠程存儲庫不是裸存儲庫。所以有兩個問題:

  1. 有沒有一種方法可以讓遠程存儲庫在git push上自動同步(即丟棄本地更改)?
  2. 爲什麼我需要使用--force才能讓它同步?什麼應該是同步它的過程?

回答

2

如果你推(以非裸)回購成功,這是因爲:

  • 要麼你推這是未簽出在遙控器上回購了分公司(非裸遠程回購)
  • receive.denyCurrentBranch是在git config

在後者的情況下設置爲falseignore,任何當前的局部修改將不會被該推擦除。
只有git checkout --force會將工作目錄重置爲由HEAD引用的實際索引內容。

確保兩個非裸露回購站之間同步的常用方法是通過添加一箇中間裸回購(您推送到)後接收掛鉤將實際遠程回購(非裸露回購)和從更新的裸回購中拉
通常的例子:Using Git to manage a web site,這是我在使用:

當你拉,一定要取消設置GIT_DIR :參見「Calling 'git pull' from a git post-update hook

相關問題