diff options
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | 2007-08-31 18:10:21 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-08-31 23:22:51 -0700 |
commit | f0fd889d7ff02efe8ee4a25ae2380db47c128682 (patch) | |
tree | 7404d7ee2fb8603059db00da2561968f7993ff69 | |
parent | filter-branch: fix remnants of old syntax in documentation (diff) | |
download | tgif-f0fd889d7ff02efe8ee4a25ae2380db47c128682.tar.xz |
rebase -i: mention the option to split commits in the man page
The interactive mode of rebase can be used to split commits. Tell the
interested parties about it, with a dedicated section in the man page.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | Documentation/git-rebase.txt | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt index a1b6dce73d..640ea3b38d 100644 --- a/Documentation/git-rebase.txt +++ b/Documentation/git-rebase.txt @@ -211,7 +211,8 @@ OPTIONS -i, \--interactive:: Make a list of the commits which are about to be rebased. Let the - user edit that list before rebasing. + user edit that list before rebasing. This mode can also be used to + split commits (see SPLITTING COMMITS below). -p, \--preserve-merges:: Instead of ignoring merges, try to recreate them. This option @@ -325,6 +326,42 @@ sure that the current HEAD is "B", and call $ git rebase -i -p --onto Q O ----------------------------- + +SPLITTING COMMITS +----------------- + +In interactive mode, you can mark commits with the action "edit". However, +this does not necessarily mean that 'git rebase' expects the result of this +edit to be exactly one commit. Indeed, you can undo the commit, or you can +add other commits. This can be used to split a commit into two: + +- Start an interactive rebase with 'git rebase -i <commit>^', where + <commit> is the commit you want to split. In fact, any commit range + will do, as long as it contains that commit. + +- Mark the commit you want to split with the action "edit". + +- When it comes to editing that commit, execute 'git reset HEAD^'. The + effect is that the HEAD is rewound by one, and the index follows suit. + However, the working tree stays the same. + +- Now add the changes to the index that you want to have in the first + commit. You can use gitlink:git-add[1] (possibly interactively) and/or + gitlink:git-gui[1] to do that. + +- Commit the now-current index with whatever commit message is appropriate + now. + +- Repeat the last two steps until your working tree is clean. + +- Continue the rebase with 'git rebase --continue'. + +If you are not absolutely sure that the intermediate revisions are +consistent (they compile, pass the testsuite, etc.) you should use +gitlink:git-stash[1] to stash away the not-yet-committed changes +after each commit, test, and amend the commit if fixes are necessary. + + Authors ------ Written by Junio C Hamano <junkio@cox.net> and |