我知道如何使用vimdiff合并修改,但是,假设我只知道整个文件是好保存还是扔掉,我怎么做呢?
我不想为每个人打开vimdiff,我想要一个命令,说'保持本地'或'保持远程'。
E。G:我有一个合并文件,标记为已更改,因为有人在窗口下打开它,更改了EOL,然后提交。合并时,我只想保留我自己的版本,而放弃他的。
我也对相反的情况感兴趣:我搞砸了,想要接受远程文件,放弃我的更改。
你也可以这样做:
git checkout --theirs /path/to/file
保存远程文件,以及:
git checkout --ours /path/to/file
保存本地文件
然后git add
,一切都完成了。
版:请记住,这是针对merge
场景的。在rebase
期间,--theirs
是指您所工作的分支
这种方法似乎更直接,避免了单独选择每个文件的需要:
# 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
直接复制自:
git checkout {branch-name} -- {file-name}
这将使用所选分支中的文件。
我喜欢这个,因为posh-git
自动完成与此工作很棒。它还消除了关于哪个分支是远程分支,哪个分支是本地分支的任何歧义。而且--theirs
也不管用
关于行结束的事情,请参阅man git-merge
:
--ignore-space-change
--ignore-all-space
--ignore-space-at-eol
确保将autocrlf = false
和/或safecrlf = false
添加到windows克隆(.git/config)
使用git 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
我一天前问了这个问题,非常类似这个问题,但我的问题略有不同,因为它与数据库sqlite3有关。
但是这个网站的一个管理员要求我删除这个问题,所以我确实删除了它,但他最终阻止了我。
无论如何,我的问题的答案是"git checkout—their db.sqlite3"
与数据库相关的东西,然后只需"git checkout—their db.sqlite3"不需要输入path.
我把这个答案留给和我有同样问题的人。