我知道如何使用vimdiff合并修改,但是,假设我只知道整个文件可以保留或丢弃,我该怎么做?
我不想为每个人打开vimdiff,我改变了想要一个“保持本地”或“保持远程”的命令 .
E.G:我合并了标记为已更改的文件,因为有人在Windows下打开它,更改EOL,然后提交 . 合并时,我想保留自己的版本并丢弃他的版本 .
我也对此感兴趣:我搞砸了很长时间并希望接受远程文件,丢弃我的更改 .
这种方法看起来更简单,无需单独选择每个文件:
# keep remote files git merge --strategy-option theirs # keep local files git merge --strategy-option ours
要么
# keep remote files git pull -Xtheirs # keep local files git pull -Xours
直接复制自:Resolve Git merge conflicts in favor of their changes during a pull
你也可以这样做:
git checkout --theirs /path/to/file
保留远程文件,并:
git checkout --ours /path/to/file
保留本地文件 .
然后 git add 他们,一切都完成了 .
git add
有关行尾的内容,请参阅 man git-merge :
man git-merge
--ignore-space-change --ignore-all-space --ignore-space-at-eol
务必将 autocrlf = false 和/或 safecrlf = false 添加到Windows克隆(.git / config)
autocrlf = false
safecrlf = false
如果您配置这样的合并工具:
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 checkout HEAD -- path/to/myfile.txt
应该做的伎俩
Edit 反过来(因为你搞砸了):
git checkout remote/branch_to_merge -- path/to/myfile.txt
git checkout {branch-name} -- {file-name}
这将使用来自所选分支的文件 .
我喜欢这个,因为 posh-git autocomplete对此很有用 . 它还消除了哪个分支是远程的以及哪个分支是本地的歧义 . 并且 --theirs 无论如何都不适合我 .
posh-git
--theirs
4 回答
这种方法看起来更简单,无需单独选择每个文件:
要么
直接复制自:Resolve Git merge conflicts in favor of their changes during a pull
你也可以这样做:
保留远程文件,并:
保留本地文件 .
然后
git add
他们,一切都完成了 .有关行尾的内容,请参阅
man git-merge
:务必将
autocrlf = false
和/或safecrlf = false
添加到Windows克隆(.git / config)使用git mergetool
如果您配置这样的合并工具:
那么简单
会做的工作
使用简单的git命令
在其他情况下,我假设
应该做的伎俩
Edit 反过来(因为你搞砸了):
git checkout {branch-name} -- {file-name}
这将使用来自所选分支的文件 .
我喜欢这个,因为
posh-git
autocomplete对此很有用 . 它还消除了哪个分支是远程的以及哪个分支是本地的歧义 . 并且--theirs
无论如何都不适合我 .