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

e-s*_*tis 175 git merge local

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

我不想为每个人打开vimdiff,我改变了想要一个"保持本地"或"保持远程"的命令.

EG:我与标记为已更改的文件合​​并,因为有人在Windows下打开它,更改EOL,然后提交.合并时,我想保留自己的版本并丢弃他的版本.

我也对此感兴趣:我搞砸了很长时间并希望接受远程文件,丢弃我的更改.

Wai*_*... 272

你也可以这样做:

git checkout --theirs /path/to/file
Run Code Online (Sandbox Code Playgroud)

保留远程文件,并:

git checkout --ours /path/to/file
Run Code Online (Sandbox Code Playgroud)

保留本地文件.

然后git add他们就完成了一切.

  • 不,他们的意思是相反的http://stackoverflow.com/q/2959443/995714 http://stackoverflow.com/q/29324812/995714他们的文件是我的文件,我们的是远程分支中的文件 (6认同)
  • "很容易",是的.直观?没有. (6认同)
  • 我这样做..但没有任何反应..我怎么知道它正在采取正确的文件?如果重要的话,我正在使用`git version 1.8.4`. (4认同)
  • 为什么反词使用?我假设"他们的"将是远程文件,"我们的"将是我的文件 (2认同)

kef*_*ich 92

这种方法看起来更简单,无需单独选择每个文件:

# keep remote files
git merge --strategy-option theirs
# keep local files
git merge --strategy-option ours
Run Code Online (Sandbox Code Playgroud)

要么

# keep remote files
git pull -Xtheirs
# keep local files
git pull -Xours
Run Code Online (Sandbox Code Playgroud)

直接复制: 解决Git合并冲突,以支持他们在拉动期间的更改

  • 爱这个。特别是如果有多个文件。 (3认同)

Ben*_*lde 12

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

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

我喜欢这个,因为posh-git自动完成功能很好用.它还消除了哪个分支是远程的以及哪个分支是本地的歧义.并--theirs没有为我反正工作.

  • 没有歧义,适用于 {mine} 和 {theirs},支持添加整个目录。**这应该是公认的答案。** (2认同)

seh*_*ehe 9

对于线端的东西,请参考man git-merge:

--ignore-space-change 
--ignore-all-space 
--ignore-space-at-eol
Run Code Online (Sandbox Code Playgroud)

一定要添加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
Run Code Online (Sandbox Code Playgroud)

那么简单

git mergetool --tool=cp
git mergetool --tool=cp -- paths/to/files.txt
git mergetool --tool=cp -y -- paths/to/files.txt # without prompting
Run Code Online (Sandbox Code Playgroud)

会做的工作

使用简单的git命令

在其他情况下,我假设

git checkout HEAD -- path/to/myfile.txt
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩

编辑反向(因为你搞砸了):

git checkout remote/branch_to_merge -- path/to/myfile.txt
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

99554 次

最近记录:

6 年,11 月 前