2017-04-06 101 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