如何使用Git和命令行在合并期间保留本地文件或远程文件?

我知道如何使用vimdiff合并修改,但是,假设我只知道整个文件很好保留或丢弃,我该怎么做?

我不想为他们每个人打开vimdiff,我改变想要一个命令,说'保持本地'或'保持远程'。

EG:由于有人在Windows下打开它,改变了EOL,然后提交,我得到了标记为已更改的文件的合并。 合并时,我想保留自己的版本并丢弃它。

我也有相反的兴趣:我搞砸了大的时间,想接受远程文件,放弃我的变化。

你也可以这样做:

git checkout --theirs /path/to/file 

保留远程文件,并:

 git checkout --ours /path/to/file 

保留本地文件。

然后git add他们,一切都完成了。

很简单,不是吗? 🙂

这种方法似乎更直接,避免了单独select每个文件的需要:

 git merge --strategy-option theirs 

要么

 git pull -Xtheirs 

直接从以下版本复制: 解决Git合并冲突,以支持在拉动过程中的更改

对于行端thingie,请参阅man git-merge

 --ignore-space-change --ignore-all-space --ignore-space-at-eol 

确保将autocrlf = false和/或safecrlf = false到Windows克隆(.git / config)

使用git mergetool

如果你像这样configuration一个mergetool:

 git config mergetool.cp.cmd '/bin/cp -v "$REMOTE" "$MERGED"' git config mergetool.cp.trustExitCode true 

然后一个简单的

 git mergetool --tool=cp git mergetool --tool=cp -- paths/to/files.txt git mergetool --tool=cp -y -- paths/to/files.txt # without prompting 

将做这项工作

使用简单的git命令

在其他情况下,我假设

 git checkout HEAD -- path/to/myfile.txt 

应该做的伎俩

编辑做相反的(因为你搞砸了):

 git checkout remote/branch_to_merge -- path/to/myfile.txt 

git checkout {branch-name} -- {file-name}

这将使用来自所选分支的文件。

我喜欢这个,因为posh-git自动完成function对此非常有效。 它也消除了哪些分支是远程的,哪些是本地的歧义。 而且--theirs他们的反正也不适合我