夫婦的評論:
然後將您的分支合併到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