diff options
author | Junio C Hamano <junkio@cox.net> | 2006-11-06 22:56:07 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-11-06 22:56:07 -0800 |
commit | bd45fec8397f1f0804db1d18af7193be323b0326 (patch) | |
tree | d167c73fa8da80ad93840de8fdb6e13d6b39f371 /Documentation | |
parent | Document git-pack-refs and link it to git(7). (diff) | |
parent | Documentation: Transplanting branch with git-rebase --onto (diff) | |
download | tgif-bd45fec8397f1f0804db1d18af7193be323b0326.tar.xz |
Merge branch 'maint'
* maint:
Documentation: Transplanting branch with git-rebase --onto
merge-recursive implicitely depends on trust_executable_bit
adjust_shared_perm: chmod() only when needed.
Fix git-runstatus for repositories containing a file named HEAD
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/git-rebase.txt | 65 |
1 files changed, 57 insertions, 8 deletions
diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt index 10f2924f4d..03e867a403 100644 --- a/Documentation/git-rebase.txt +++ b/Documentation/git-rebase.txt @@ -51,20 +51,69 @@ would be: D---E---F---G master ------------ -While, starting from the same point, the result of either of the following -commands: +The latter form is just a short-hand of `git checkout topic` +followed by `git rebase master`. - git-rebase --onto master~1 master - git-rebase --onto master~1 master topic +Here is how you would transplant a topic branch based on one +branch to another, to pretend that you forked the topic branch +from the latter branch, using `rebase --onto`. -would be: +First let's assume your 'topic' is based on branch 'next'. +For example feature developed in 'topic' depends on some +functionality which is found in 'next'. ------------ - A'--B'--C' topic - / - D---E---F---G master + o---o---o---o---o master + \ + o---o---o---o---o next + \ + o---o---o topic +------------ + +We would want to make 'topic' forked from branch 'master', +for example because the functionality 'topic' branch depend on +got merged into more stable 'master' branch, like this: + +------------ + o---o---o---o---o master + | \ + | o'--o'--o' topic + \ + o---o---o---o---o next ------------ +We can get this using the following command: + + git-rebase --onto master next topic + + +Another example of --onto option is to rebase part of a +branch. If we have the following situation: + +------------ + H---I---J topicB + / + E---F---G topicA + / + A---B---C---D master +------------ + +then the command + + git-rebase --onto master topicA topicB + +would result in: + +------------ + H'--I'--J' topicB + / + | E---F---G topicA + |/ + A---B---C---D master +------------ + +This is useful when topicB does not depend on topicA. + In case of conflict, git-rebase will stop at the first problematic commit and leave conflict markers in the tree. You can use git diff to locate the markers (<<<<<<) and make edits to resolve the conflict. For each |