2017-04-06 98 views
1

我試圖設置一個進程,每隔幾分鐘會自動從回購中拉出來,並設置一些腳本來運行並進行本地更改。Git pull只覆蓋衝突文件

例如,我在本地工作目錄中有兩個已更改的文件,一個文件具有遠程服務器的新提交,另一個文件沒有。

fileName1.txt (no conflict) 
fileName2.txt (has conflict) 

然後,當我試圖git pull,會有因爲fileName2.txt衝突的衝突。

我所試圖解決的是,

  1. 保持fileName1.txt,因爲它是;
  2. 覆蓋fileName2.txt

然後,手動,我能做的,

git checkout fileName2.txt 
git pull 

在這種情況下,我必須指定,我想籤的文件名。如何自動找到它們的衝突文件和checkout

我不能使用

git reset --hard && git pull 

git checkout . && git pull 

,因爲這些將覆蓋這兩個fileName1.txtfileName2.txt,如何只覆蓋有衝突的文件?

預先感謝您!

+0

想做什麼?在發生衝突的情況下提取更改並僅保留服務器端代碼? – CodeWizard

+0

@CodeWizard,嗨,我想從服務器和本地文件,但只有這些文件,而不是本地更改,但沒有衝突拉的文件。 Thx – HaipengSu

+1

git無法將不同版本的文件簽出到相同的工作副本中。如果你簽出一個版本,你可以簽出所有的版本。所以可能你想要的東西不可能。 – max630

回答

0

您可以使用

git diff --name-only --diff-filter=U

只得到有衝突的文件列表。你可以用你的原始解決方案(git checkout)來使用這個列表來解決你的問題。

+0

謝謝。但我不認爲這會做到這一點。我在命令行嘗試。但沒有顯示任何結果。 – HaipengSu