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

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

例:我得到了一个合并文件标记为已更改,因为有人在窗口下打开它,改变了EOL,然后提交。当合并时,我只想保留我自己的版本,放弃他的版本。

我也对相反的情况感兴趣:我搞砸了很多事情,想要接受远程文件,放弃我的更改。


当前回答

你也可以这样做:

git checkout --theirs /path/to/file

要保存远程文件,并且:

git checkout --ours /path/to/file

保存本地文件。

然后git添加它们,一切就完成了。

版: 请记住,这是用于合并场景的。在重组期间,他们指的是你一直工作的分支。

其他回答

我一天前问过这个问题,非常相似,但我的问题略有不同,因为它与数据库sqlite3有关。

但是这个网站的一个经理让我删除这个问题,所以我删除了它,但他最终阻止了我。

不管怎样,我的问题的答案是“git checkout -their db.sqlite3”

一些与数据库相关的东西,然后简单地“git checkout—他们的数据库。Sqlite3”不需要放路径。

我把这个答案留给和我有同样问题的人。

Git签出{branch-name}——{file-name}

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

我喜欢这个,因为posh-git自动完成功能非常好。它还消除了关于哪个分支是远程分支,哪个分支是本地分支的任何歧义。 而且——反正他们对我也没用。

对于行结束的东西,参考man git-merge:

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

请确保在windows克隆(.git/config)中添加自独裁者= false和/或safecrlf = false

使用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

你也可以这样做:

git checkout --theirs /path/to/file

要保存远程文件,并且:

git checkout --ours /path/to/file

保存本地文件。

然后git添加它们,一切就完成了。

版: 请记住,这是用于合并场景的。在重组期间,他们指的是你一直工作的分支。

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

# keep remote files
git merge --strategy-option theirs
# keep local files
git merge --strategy-option ours

or

# keep remote files
git pull -Xtheirs
# keep local files
git pull -Xours

直接复制自: 在拉取期间解决Git合并冲突以支持其更改