如何使用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
他们的反正也不适合我