如何在git中合并和更新文件时解决冲突?

时间:2011-02-02 08:46:04

标签: git version-control

我觉得我接近这一切都错了。

我作为团队的一员工作,我们使用git。现在,当我从我的团队中提取更新时,很明显会发生冲突 - git似乎在文件中插入大量文本并不好。

无论如何,有没有一种可行的方法来管理这些冲突(我在Windows上)。

我使用了winmerge,但从我所看到的,它只能比较2个目录。它使解决冲突变得轻而易举,但要求我在2个不同的位置拥有2个源的状态。

有人知道更好的方法吗?或者如何整合这两个?

2 个答案:

答案 0 :(得分:5)

您可以为Git定义一个mergetool,它会针对每个冲突文件进行launced。如果您只有少量冲突,这可以正常工作。一些链接:Using Beyond Comparediscussion about this on SOmore general instructionsman page

如果您有很多更改,可以使用一些脚本包。

基本上你需要做的是得到例如超越比较在Linux中工作:

git config --global merge.conflictstyle=diff3
git config --global merge.tool=bc3
git config --global mergetool.bc3.cmd=/usr/bin/bcompare $LOCAL $REMOTE $BASE $MERGED
git config --global mergetool.bc3.trustexitcode=true

您可以轻松找到有关其他工具的信息,Git已经支持多种工具。

答案 1 :(得分:0)

这是一个相关的问题,答案可能对您有所帮助:

Git on Windows: How do you set up a mergetool?

我亲自前往p4merge(免费),使用以下设置(适用于我,可能不是“正确”的做事方式):

C:\Program Files\Git\cmd中,我有一个文件git-merge.sh,如下所示:

#!/bin/sh

# Passing the following parameters to mergetool:
#  local base remote merge_result

base=$1
alocal=$2
remote=$3
result=$4

if [ -f $base ]
then
    p4merge.exe -dl "$base" "$alocal" "$remote" "$result" 
else
    p4merge.exe -dl "$result" "$alocal" "$remote" "$result" 
fi

C:\Documents and Settings\me我的.gitconfig包含以下部分:

[merge]    
    keepBackup = false
    tool = p4merge
[mergetool "p4merge"]
    cmd = \"c:/Program Files/Perforce/p4merge.exe\" \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
    keepTemporaries = false
    trustExitCode = false
    keepBackup = false
    path = C:/Program Files/Perforce/p4merge.exe
[mergetool]
    keepBackup = false