diff options
author | Erick Mattos <erick.mattos@gmail.com> | 2010-03-21 12:34:38 -0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-03-21 16:43:30 -0700 |
commit | 9db5ebf4022d8e11ac20e75a3d43af161b752fcd (patch) | |
tree | e1edfca2c85bb339eb7c0234cd85fea9f7ebe141 /Documentation/git-checkout.txt | |
parent | f1ba1c90e1704e937ff59ee510a8d46a5ab52a1a (diff) | |
download | git-9db5ebf4022d8e11ac20e75a3d43af161b752fcd.tar.gz |
git checkout: create unparented branch by --orphan
Similar to -b, --orphan creates a new branch, but it starts without any
commit. After running "git checkout --orphan newbranch", you are on a
new branch "newbranch", and the first commit you create from this state
will start a new history without any ancestry.
"git checkout --orphan" keeps the index and the working tree files
intact in order to make it convenient for creating a new history whose
trees resemble the ones from the original branch.
When creating a branch whose trees have no resemblance to the ones from
the original branch, it may be easier to start work on the new branch by
untracking and removing all working tree files that came from the
original branch, by running a 'git rm -rf .' immediately after running
"checkout --orphan".
Signed-off-by: Erick Mattos <erick.mattos@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'Documentation/git-checkout.txt')
-rw-r--r-- | Documentation/git-checkout.txt | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/Documentation/git-checkout.txt b/Documentation/git-checkout.txt index 37c1810e3f..4505eb6d84 100644 --- a/Documentation/git-checkout.txt +++ b/Documentation/git-checkout.txt @@ -9,7 +9,7 @@ SYNOPSIS -------- [verse] 'git checkout' [-q] [-f] [-m] [<branch>] -'git checkout' [-q] [-f] [-m] [-b <new_branch>] [<start_point>] +'git checkout' [-q] [-f] [-m] [[-b|--orphan] <new_branch>] [<start_point>] 'git checkout' [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <paths>... 'git checkout' --patch [<tree-ish>] [--] [<paths>...] @@ -90,6 +90,24 @@ explicitly give a name with '-b' in such a case. Create the new branch's reflog; see linkgit:git-branch[1] for details. +--orphan:: + Create a new branch named <new_branch>, unparented to any other + branch. The new branch you switch to does not have any commit + and after the first one it will become the root of a new history + completely unconnected from all the other branches. ++ +When you use "--orphan", the index and the working tree are kept intact. +This allows you to start a new history that records set of paths similar +to that of the start-point commit, which is useful when you want to keep +different branches for different audiences you are working to like when +you have an open source and commercial versions of a software, for example. ++ +If you want to start a disconnected history that records set of paths +totally different from the original branch, you may want to first clear +the index and the working tree, by running "git rm -rf ." from the +top-level of the working tree, before preparing your files (by copying +from elsewhere, extracting a tarball, etc.) in the working tree. + -m:: --merge:: When switching branches, |