2015-05-20 137 views
0

「本地更改將被合併覆蓋」我一直在努力與其他開發跨三臺服務器:Git的工作流程:

  1. 我的本地VM
  2. 開發服務器
  3. Live服務器

我採用的工作流是,在我的本地虛擬機上執行所有工作,然後將更改從repomote存儲庫中提取到dev服務器(dev分支)和活動服務器(與dev分支合併後的master bean) 。

不幸的是,另一位開發人員修改了一些文件,直接在活動服務器上安裝Wordpress插件。因此,當我試圖把master分支現場服務器上最新與master上的遠程reposiotry,我得到的消息像這樣的:

Error: Your local changes to 'plugins/bulk-page-creator/bulk-page-creator.php' would be overwritten by merge. Aborting. 

請提交更改或藏匿,然後才能合併。

我猜這些文件沒有被跟蹤。我真的想避免從本地虛擬機以外的服務器轉向遠程回購。

我在這裏解釋這個問題的選擇是什麼。我只需要將實時服務器上的代碼庫更新到遠程倉庫即可 - 就是這樣。

我應該不知何故放棄這些本地更改?

我也試圖代碼庫與其它設備同步:

git fetch git merge FEATCH_HEAD

沒有運氣。

我在這裏有什麼選擇?

回答

1

你是對的,你得到這條消息是因爲這些文件已經存在本地,在當前檢出版本中沒有被跟蹤,你試圖合併的提交包含該文件。

當Git在合併之前已經知道該文件時,它可以安全地同意覆蓋它,但是在這種情況下有可能你有該文件並且不知道Git現在會覆蓋它,所以Git根本不會這樣做。

要解決此問題,您只需騰出空間讓Git執行合併。你可以用兩種簡單的方法做到這一點:

  1. 刪除文件。這樣,Git就可以在沒有任何衝突的情況下從新提交中檢出文件。
  2. 重命名文件。如上所述,但您有機會恢復您的本地更改,以防您確保本地執行的所有操作都包含在跟蹤文件中。
+0

感謝您的回覆。這些文件真的很多。在活動服務器上提交它們也有幫助嗎?我不願意將刪除操作搞亂,因爲這是一個現場服務器,應該不會有絲毫的偏見。 – luqo33

+0

你可以添加和提交它們,但是你將不得不處理合並和可能的合併衝突。如果你只是想擺脫所有可能的本地變化並獲得遠程版本,你也可以獲取遠程('git fetch origin'),然後使用'git reset --hard origin/master'將其重置爲其主節點。但是這也會讓你失去任何東西,所以請確保你沒有任何實際需要的更改。 – poke

+0

我選擇抓取和硬復位到原點/主點。一切都很好。非常感激! – luqo33