夫妇的评论:
然后将您的分支合并到master
。
这通常是不是一个好主意,忽略一个重订所有方面,但如果你是一定关于您的修改(如“需要修改,没有上下文的所有”),它会工作。
从git rebase man page:
-C<n>
确保至少<n>
行之前和每次更改后周围的上下文匹配的。
当存在较少的周围环境线时,它们都必须匹配。
默认情况下,不会忽略上下文。
你可以(在PowerShell会话这里,与Git1.6.5.1,XP系统)测试它很轻松地
首先创建一个小蝙蝠实用genfile.bat
echo hello, World %1 > afile.txt
echo hello, World %2 >> afile.txt
echo hello, World 3 >> afile.txt
echo hello, World 4 >> afile.txt
echo hello, World 5 >> afile.txt
然后创建回购并添加文件:
PS D:\git\tests\mergeLines> git init m0
PS D:\git\tests\mergeLines> cd m0
PS D:\[...]\m0> D:\git\tests\mergeLines\genfile.bat 1 2
PS D:\[...]\m0> git add -A
PS D:\[...]\m0> git ci -m "afile to be modified concurrently"
您的文件看起来是这样的:
hello, World 1
hello, World 2
hello, World 3
hello, World 4
hello, World 5
修改它的一个分支
PS D:\[...]\m0> git co -b abranch
PS D:\[...]\m0> D:\git\tests\mergeLines\genfile.bat 1 2_modified
PS D:\[...]\m0> git ci -a -m "afile modified in abranch"
您将有:
hello, World 1
hello, World 2_modified
hello, World 3
hello, World 4
hello, World 5
然后修改它的主人
PS D:\[...]\m0> git co master
PS D:\[...]\m0> D:\git\tests\mergeLines\genfile.bat 1_master 2
PS D:\[...]\m0> git ci -a -m "afile modified in master"
哪给你:
hello, World 1_master
hello, World 2
hello, World 3
hello, World 4
hello, World 5
克隆了一个回购的第一个实验(即:中abranch
合并为master
)
PS D:\[...]\m0> cd ..
PS D:\git\tests\mergeLines> git clone m0 m1
PS D:\git\tests\mergeLines> cd m1
PS D:\[...]\m1> git co -b abranch origin/abranch
PS D:\[...]\m1> git co master
PS D:\[...]\m1> git merge abranch
这就给了你一个矛盾:再度
Auto-merging afile.txt
CONFLICT (content): Merge conflict in afile.txt
Automatic merge failed; fix conflicts and then commit the result.
PS D:\[...]\m1> type afile.txt
<<<<<<< HEAD
hello, World 1_master
hello, World 2
=======
hello, World 1
hello, World 2_modified
>>>>>>> abranch
hello, World 3
hello, World 4
hello, World 5
克隆了第一个回购协议,这次在master
之上第一个abranch
,没有上下文:
PS D:\[...]\m1> cd ..
PS D:\git\tests\mergeLines> git clone m0 m2
PS D:\git\tests\mergeLines> cd m2
PS D:\[...]\m2> git co -b abranch origin/abranch
PS D:\[...]\m2> git rebase -C0 master
你的文件被悄悄合并:
hello, World 1_master
hello, World 2_modified
hello, World 3
hello, World 4
hello, World 5
关当然,如果你切换回master
和现在合并abranch
,其结果将是一个快进合并。
PS D:\git\tests\mergeLines\m2> git co master
Switched to branch 'master'
PS D:\git\tests\mergeLines\m2> git merge abranch
Updating c8f48b4..8bee1d2
Fast forward
afile.txt | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
>你是否建议,它可以正常工作更多的线?是的,如果我们正在谈论*修改过的行,而不是关于新行或删除行(这会改变行数,并且没有上下文肯定会每次发生冲突)。 – VonC 2009-11-18 16:29:56
>顺便说一句,我尝试了rebase - >同样的冲突。如果你添加了'-C0'参数并且仍然存在冲突,这意味着一些行重叠,新行或删除的行存在差异。 '-C0'只在有相同的行的情况下才有效,除了一对(每个版本中不同)被修改。 – VonC 2009-11-18 16:31:38