- , git merge.
( "" , "remote", , , Mercurial "",
, ?
.
, , ( ). , .
(, . . --3way, --no-3way am.threeWay git -am, , .)
$ git rebase -i
pick aaaaaaa first commit
pick bbbbbbb second commit
pick ccccccc third commit
, , , :
A - B - C <-- branch
/
... - o - *
\
G - H <-- origin/branch
A, B C (A= aaaaaaa ..), : :
A - B - C [abandoned]
/
... - o - * A' - B' - C' <-- branch
\ /
G - H <-- origin/branch
, A.
(diffs) A , commit *, diff commit H.
Commit H, , commit *. , A H, ... commit *. , , Git , .
, commit * A H. , commit A'. ( SHA-1 , , aaaaaa1. , , A'.)
cherry-pick B. B , A, diff A'.
Commit A', , commit B. , B A', ... commit * . , . , Git , , . , Git diff * vs B * vs A' diff. , * vs B , A, * vs A' A, , , Git . Git . ( 2.6, .)
git diff commit A B. index:
diff --git a/foo b/foo
index f0b98f8..0ea3286 100644
() foo commit A. - commit B.
Git . , commit A . (Git --build-fake-ancestor git apply). , , , commit A. Git , blob .)
, Git cherry-picking A, commit *, .
, C. B vs C, , A vs B. , ; , commit * . . , , , B .
, , : . ( git rerere .)