<h2>SYNOPSIS</h2>\r
<div class="sectionbody">\r
<div class="verseblock">\r
-<div class="content"><em>git-clone</em> [-l [-s]] [-q] [-n] [-o <name>] [-u <upload-pack>]\r
+<div class="content"><em>git-clone</em> [-l [-s]] [-q] [-n] [--naked] [-o <name>] [-u <upload-pack>]\r
<repository> [<directory>]</div></div>\r
</div>\r
<h2>DESCRIPTION</h2>\r
</p>\r
</dd>\r
<dt>\r
+--naked\r
+</dt>\r
+<dd>\r
+<p>\r
+ Make a <em>naked</em> GIT repository. That is, instead of\r
+ creating <tt><directory></tt> and placing the administrative\r
+ files in <tt><directory>/.git</tt>, make the <tt><directory></tt>\r
+ itself the <tt>$GIT_DIR</tt>. This implies <tt>-n</tt> option.\r
+</p>\r
+</dd>\r
+<dt>\r
-o <name>\r
</dt>\r
<dd>\r
$ git show-branch</tt></pre>\r
</div></div>\r
</dd>\r
+<dt>\r
+Create a naked repository to publish your changes to the public\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git clone --naked -l /home/proj/.git /pub/scm/proj.git</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+Create a repository on the kernel.org machine that borrows from Linus\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git clone --naked -l -s /pub/scm/.../torvalds/linux-2.6.git \\r
+ /pub/scm/.../me/subsys-2.6.git</tt></pre>\r
+</div></div>\r
+</dd>\r
</dl>\r
</div>\r
<h2>Author</h2>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 06-Jan-2006 17:12:09 PDT\r
+Last updated 15-Jan-2006 02:13:28 PDT\r
</div>\r
</div>\r
</body>\r
SYNOPSIS
--------
[verse]
-'git-clone' [-l [-s]] [-q] [-n] [-o <name>] [-u <upload-pack>]
+'git-clone' [-l [-s]] [-q] [-n] [--naked] [-o <name>] [-u <upload-pack>]
<repository> [<directory>]
DESCRIPTION
-n::
No checkout of HEAD is performed after the clone is complete.
+--naked::
+ Make a 'naked' GIT repository. That is, instead of
+ creating `<directory>` and placing the administrative
+ files in `<directory>/.git`, make the `<directory>`
+ itself the `$GIT_DIR`. This implies `-n` option.
+
-o <name>::
Instead of using the branch name 'origin' to keep track
of the upstream repository, use <name> instead. Note
$ git show-branch
------------
+
+Create a naked repository to publish your changes to the public::
++
+------------
+$ git clone --naked -l /home/proj/.git /pub/scm/proj.git
+------------
+
+
+Create a repository on the kernel.org machine that borrows from Linus::
++
+------------
+$ git clone --naked -l -s /pub/scm/.../torvalds/linux-2.6.git \
+ /pub/scm/.../me/subsys-2.6.git
+------------
+
+
Author
------
Written by Linus Torvalds <torvalds@osdl.org>
</div>\r
<h2>SYNOPSIS</h2>\r
<div class="sectionbody">\r
-<p><em>git-show-branch [--all] [--heads] [--tags] [--topo-order] [--more=<n> | --list | --independent | --merge-base] [--no-name | --sha1-name] [<rev> | <glob>]…</em></p>\r
+<div class="verseblock">\r
+<div class="content">git-show-branch [--all] [--heads] [--tags] [--topo-order] [--current]\r
+ [--more=<n> | --list | --independent | --merge-base]\r
+ [--no-name | --sha1-name] [<rev> | <glob>]…</div></div>\r
</div>\r
<h2>DESCRIPTION</h2>\r
<div class="sectionbody">\r
with <rev>s or <globs>s (or all refs under $GIT_DIR/refs/heads\r
and/or $GIT_DIR/refs/tags) semi-visually.</p>\r
<p>It cannot show more than 29 branches and commits at a time.</p>\r
+<p>It uses <tt>showbranch.default</tt> multi-valued configuration items if\r
+no <rev> nor <glob> is given on the command line.</p>\r
</div>\r
<h2>OPTIONS</h2>\r
<div class="sectionbody">\r
</p>\r
</dd>\r
<dt>\r
+--current\r
+</dt>\r
+<dd>\r
+<p>\r
+ With this option, the command includes the current\r
+ branch to the list of revs to be shown when it is not\r
+ given on the command line.\r
+</p>\r
+</dd>\r
+<dt>\r
--topo-order\r
</dt>\r
<dd>\r
</dt>\r
<dd>\r
<p>\r
- Synomym to <tt>--more=-1</tt>\r
+ Synonym to <tt>--more=-1</tt>\r
</p>\r
</dd>\r
<dt>\r
<div class="sectionbody">\r
<p>Given N <references>, the first N lines are the one-line\r
description from their commit message. The branch head that is\r
-pointed at by $GIT_DIR/HEAD is prefixed with an asterisk <em>*</em>\r
-character while other heads are prefixed with a <em>!</em> character.</p>\r
+pointed at by $GIT_DIR/HEAD is prefixed with an asterisk <tt>*</tt>\r
+character while other heads are prefixed with a <tt>!</tt> character.</p>\r
<p>Following these N lines, one-line log for each commit is\r
displayed, indented N places. If a commit is on the I-th\r
-branch, the I-th indentation character shows a <em>+</em> sign;\r
-otherwise it shows a space. Each commit shows a short name that\r
+branch, the I-th indentation character shows a <tt>+</tt> sign;\r
+otherwise it shows a space. Merge commits are denoted by\r
+a <tt>-</tt> sign. Each commit shows a short name that\r
can be used as an extended SHA1 to name that commit.</p>\r
<p>The following example shows three branches, "master", "fixes"\r
and "mhf":</p>\r
<div class="listingblock">\r
<div class="content">\r
<pre><tt>$ git show-branch master fixes mhf\r
-! [master] Add 'git show-branch'.\r
+* [master] Add 'git show-branch'.\r
! [fixes] Introduce "reset type" flag to "git reset"\r
! [mhf] Allow "+remote:local" refspec to cause --force when fetching.\r
---\r
+ [mhf~6] Retire git-parse-remote.\r
+ [mhf~7] Multi-head fetch.\r
+ [mhf~8] Start adding the $GIT_DIR/remotes/ support.\r
-+++ [master] Add 'git show-branch'.</tt></pre>\r
+*++ [master] Add 'git show-branch'.</tt></pre>\r
</div></div>\r
<p>These three branches all forked from a common commit, [master],\r
whose commit message is "Add <em>git show-branch</em>. "fixes" branch\r
adds one commit <em>Introduce "reset type"</em>. "mhf" branch has many\r
-other commits.</p>\r
+other commits. The current branch is "master".</p>\r
+</div>\r
+<h2>EXAMPLE</h2>\r
+<div class="sectionbody">\r
+<p>If you keep your primary branches immediately under\r
+<tt>$GIT_DIR/refs/heads</tt>, and topic branches in subdirectories of\r
+it, having the following in the configuration file may help:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>[showbranch]\r
+ default = --topo-order\r
+ default = heads/*\r
+</tt></pre>\r
+</div></div>\r
+<p>With this,<tt>git show-branch</tt> without extra parameters would show\r
+only the primary branches. In addition, if you happen to be on\r
+your topic branch, it is shown as well.</p>\r
</div>\r
<h2>Author</h2>\r
<div class="sectionbody">\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 06-Jan-2006 17:12:45 PDT\r
+Last updated 15-Jan-2006 02:13:29 PDT\r
</div>\r
</div>\r
</body>\r
SYNOPSIS
--------
-'git-show-branch [--all] [--heads] [--tags] [--topo-order] [--more=<n> | --list | --independent | --merge-base] [--no-name | --sha1-name] [<rev> | <glob>]...'
+[verse]
+git-show-branch [--all] [--heads] [--tags] [--topo-order] [--current]
+ [--more=<n> | --list | --independent | --merge-base]
+ [--no-name | --sha1-name] [<rev> | <glob>]...
DESCRIPTION
-----------
It cannot show more than 29 branches and commits at a time.
+It uses `showbranch.default` multi-valued configuration items if
+no <rev> nor <glob> is given on the command line.
+
OPTIONS
-------
Show all refs under $GIT_DIR/refs, $GIT_DIR/refs/heads,
and $GIT_DIR/refs/tags, respectively.
+--current::
+ With this option, the command includes the current
+ branch to the list of revs to be shown when it is not
+ given on the command line.
+
--topo-order::
By default, the branches and their commits are shown in
reverse chronological order. This option makes them
tree.
--list::
- Synomym to `--more=-1`
+ Synonym to `--more=-1`
--merge-base::
Instead of showing the commit list, just act like the
------
Given N <references>, the first N lines are the one-line
description from their commit message. The branch head that is
-pointed at by $GIT_DIR/HEAD is prefixed with an asterisk '*'
-character while other heads are prefixed with a '!' character.
+pointed at by $GIT_DIR/HEAD is prefixed with an asterisk `*`
+character while other heads are prefixed with a `!` character.
Following these N lines, one-line log for each commit is
displayed, indented N places. If a commit is on the I-th
-branch, the I-th indentation character shows a '+' sign;
-otherwise it shows a space. Each commit shows a short name that
+branch, the I-th indentation character shows a `+` sign;
+otherwise it shows a space. Merge commits are denoted by
+a `-` sign. Each commit shows a short name that
can be used as an extended SHA1 to name that commit.
The following example shows three branches, "master", "fixes"
------------------------------------------------
$ git show-branch master fixes mhf
-! [master] Add 'git show-branch'.
+* [master] Add 'git show-branch'.
! [fixes] Introduce "reset type" flag to "git reset"
! [mhf] Allow "+remote:local" refspec to cause --force when fetching.
---
+ [mhf~6] Retire git-parse-remote.
+ [mhf~7] Multi-head fetch.
+ [mhf~8] Start adding the $GIT_DIR/remotes/ support.
-+++ [master] Add 'git show-branch'.
+*++ [master] Add 'git show-branch'.
------------------------------------------------
These three branches all forked from a common commit, [master],
whose commit message is "Add 'git show-branch'. "fixes" branch
adds one commit 'Introduce "reset type"'. "mhf" branch has many
-other commits.
+other commits. The current branch is "master".
+
+
+EXAMPLE
+-------
+
+If you keep your primary branches immediately under
+`$GIT_DIR/refs/heads`, and topic branches in subdirectories of
+it, having the following in the configuration file may help:
+
+------------
+[showbranch]
+ default = --topo-order
+ default = heads/*
+
+------------
+
+With this,`git show-branch` without extra parameters would show
+only the primary branches. In addition, if you happen to be on
+your topic branch, it is shown as well.
+
Author
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 06-Jan-2006 17:12:58 PDT\r
+Last updated 15-Jan-2006 02:13:34 PDT\r
</div>\r
</div>\r
</body>\r
<div class="listingblock">\r
<div class="content">\r
<pre><tt>$ git show-branch --more=4 master master^2 | head\r
-! [master] Merge refs/heads/portable from http://www.cs.berkeley....\r
+* [master] Merge refs/heads/portable from http://www.cs.berkeley....\r
! [master^2] Replace C99 array initializers with code.\r
--\r
-+ [master] Merge refs/heads/portable from http://www.cs.berkeley....\r
-++ [master^2] Replace C99 array initializers with code.\r
-++ [master^2~1] Replace unsetenv() and setenv() with older putenv().\r
-++ [master^2~2] Include sys/time.h in daemon.c.\r
-++ [master^2~3] Fix ?: statements.\r
-++ [master^2~4] Replace zero-length array decls with [].\r
-+ [master~1] tutorial note about git branch</tt></pre>\r
+- [master] Merge refs/heads/portable from http://www.cs.berkeley....\r
+*+ [master^2] Replace C99 array initializers with code.\r
+*+ [master^2~1] Replace unsetenv() and setenv() with older putenv().\r
+*+ [master^2~2] Include sys/time.h in daemon.c.\r
+*+ [master^2~3] Fix ?: statements.\r
+*+ [master^2~4] Replace zero-length array decls with [].\r
+* [master~1] tutorial note about git branch</tt></pre>\r
</div></div>\r
<p>The <em>—more=4</em> above means "after we reach the merge base of refs,\r
show until we display four more common commits". That last commit\r
+ [pu~4] Document "git cherry-pick" and "git revert"\r
+ [pu~5] Remove git-apply-patch-script.\r
+ [pu~6] Redo "revert" using three-way merge machinery.\r
- + [rc] Merge refs/heads/master from .\r
-+++ [master] Revert "Replace zero-length array decls with []."\r
- + [rc~1] Merge refs/heads/master from .\r
-+++ [master~1] Merge refs/heads/portable from http://www.cs.berkeley....</tt></pre>\r
+ - [rc] Merge refs/heads/master from .\r
+++* [master] Revert "Replace zero-length array decls with []."\r
+ - [rc~1] Merge refs/heads/master from .\r
+... [master~1] Merge refs/heads/portable from http://www.cs.berkeley....</tt></pre>\r
</div></div>\r
</div>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 27-Dec-2005 00:17:13 PDT\r
+Last updated 15-Jan-2006 02:13:35 PDT\r
</div>\r
</div>\r
</body>\r
------------------------------------------------
$ git show-branch --more=4 master master^2 | head
-! [master] Merge refs/heads/portable from http://www.cs.berkeley....
+* [master] Merge refs/heads/portable from http://www.cs.berkeley....
! [master^2] Replace C99 array initializers with code.
--
-+ [master] Merge refs/heads/portable from http://www.cs.berkeley....
-++ [master^2] Replace C99 array initializers with code.
-++ [master^2~1] Replace unsetenv() and setenv() with older putenv().
-++ [master^2~2] Include sys/time.h in daemon.c.
-++ [master^2~3] Fix ?: statements.
-++ [master^2~4] Replace zero-length array decls with [].
-+ [master~1] tutorial note about git branch
+- [master] Merge refs/heads/portable from http://www.cs.berkeley....
+*+ [master^2] Replace C99 array initializers with code.
+*+ [master^2~1] Replace unsetenv() and setenv() with older putenv().
+*+ [master^2~2] Include sys/time.h in daemon.c.
+*+ [master^2~3] Fix ?: statements.
+*+ [master^2~4] Replace zero-length array decls with [].
+* [master~1] tutorial note about git branch
------------------------------------------------
The '--more=4' above means "after we reach the merge base of refs,
+ [pu~4] Document "git cherry-pick" and "git revert"
+ [pu~5] Remove git-apply-patch-script.
+ [pu~6] Redo "revert" using three-way merge machinery.
- + [rc] Merge refs/heads/master from .
-+++ [master] Revert "Replace zero-length array decls with []."
- + [rc~1] Merge refs/heads/master from .
-+++ [master~1] Merge refs/heads/portable from http://www.cs.berkeley....
+ - [rc] Merge refs/heads/master from .
+++* [master] Revert "Replace zero-length array decls with []."
+ - [rc~1] Merge refs/heads/master from .
+... [master~1] Merge refs/heads/portable from http://www.cs.berkeley....
------------------------------------------------
* [master] Merge work in mybranch\r
! [mybranch] Some work.\r
--\r
-+ [master] Merge work in mybranch\r
-++ [mybranch] Some work.</tt></pre>\r
+- [master] Merge work in mybranch\r
+*+ [mybranch] Some work.</tt></pre>\r
</div></div>\r
<p>The first two lines indicate that it is showing the two branches\r
and the first line of the commit log message from their\r
top-of-the-tree commits, you are currently on <tt>master</tt> branch\r
-(notice the asterisk <tt>*</tt> character), and the first column for\r
+(notice the asterisk <tt><strong></tt> character), and the first column for\r
the later output lines is used to show commits contained in the\r
<tt>master</tt> branch, and the second column for the <tt>mybranch</tt>\r
branch. Three commits are shown along with their log messages.\r
-All of them have plus <tt>+</tt> characters in the first column, which\r
+All of them have non blank characters in the first column (<tt></strong></tt>\r
+shows an ordinary commit on the current branch, <tt>.</tt> is a merge commit), which\r
means they are now part of the <tt>master</tt> branch. Only the "Some\r
work" commit has the plus <tt>+</tt> character in the second column,\r
because <tt>mybranch</tt> has not been merged to incorporate these\r
! [master] Merge work in mybranch\r
* [mybranch] Merge work in mybranch\r
--\r
-++ [master] Merge work in mybranch</tt></pre>\r
+-- [master] Merge work in mybranch</tt></pre>\r
</div></div>\r
</div>\r
<h2>Merging external work</h2>\r
! [master] Merge work in mybranch\r
* [mybranch] Merge work in mybranch\r
--\r
-++ [master] Merge work in mybranch\r
-++ [master^2] Some work.\r
-++ [master^] Some fun.</tt></pre>\r
+-- [master] Merge work in mybranch\r
++* [master^2] Some work.\r
++* [master^] Some fun.</tt></pre>\r
</div></div>\r
<p>Remember, before running <tt>git merge</tt>, our <tt>master</tt> head was at\r
"Some fun." commit, while our <tt>mybranch</tt> head was at "Some\r
! [mybranch] Some work.\r
--\r
+ [mybranch] Some work.\r
-+ [master] Some fun.\r
-++ [mybranch^] New day.</tt></pre>\r
+* [master] Some fun.\r
+*+ [mybranch^] New day.</tt></pre>\r
</div></div>\r
<p>Now we are ready to experiment with the merge by hand.</p>\r
<p><tt>git merge</tt> command, when merging two branches, uses 3-way merge\r
+ [diff-fix] Fix rename detection.\r
+ [diff-fix~1] Better common substring algorithm.\r
+ [commit-fix] Fix commit message normalization.\r
- + [master] Release candidate #1\r
-+++ [diff-fix~2] Pretty-print messages.</tt></pre>\r
+ * [master] Release candidate #1\r
+++* [diff-fix~2] Pretty-print messages.</tt></pre>\r
</div></div>\r
<p>Both fixes are tested well, and at this point, you want to merge\r
in both of them. You could merge in <em>diff-fix</em> first and then\r
! [diff-fix] Fix rename detection.\r
* [master] Merge fix in commit-fix\r
---\r
- + [master] Merge fix in commit-fix\r
-+ + [commit-fix] Fix commit message normalization.\r
- + [master~1] Merge fix in diff-fix\r
- ++ [diff-fix] Fix rename detection.\r
- ++ [diff-fix~1] Better common substring algorithm.\r
- + [master~2] Release candidate #1\r
-+++ [master~3] Pretty-print messages.</tt></pre>\r
+ - [master] Merge fix in commit-fix\r
++ * [commit-fix] Fix commit message normalization.\r
+ - [master~1] Merge fix in diff-fix\r
+ +* [diff-fix] Fix rename detection.\r
+ +* [diff-fix~1] Better common substring algorithm.\r
+ * [master~2] Release candidate #1\r
+++* [master~3] Pretty-print messages.</tt></pre>\r
</div></div>\r
<p>However, there is no particular reason to merge in one branch\r
first and the other next, when what you have are a set of truly\r
! [diff-fix] Fix rename detection.\r
* [master] Octopus merge of branches 'diff-fix' and 'commit-fix'\r
---\r
- + [master] Octopus merge of branches 'diff-fix' and 'commit-fix'\r
-+ + [commit-fix] Fix commit message normalization.\r
- ++ [diff-fix] Fix rename detection.\r
- ++ [diff-fix~1] Better common substring algorithm.\r
- + [master~1] Release candidate #1\r
-+++ [master~2] Pretty-print messages.</tt></pre>\r
+ - [master] Octopus merge of branches 'diff-fix' and 'commit-fix'\r
++ * [commit-fix] Fix commit message normalization.\r
+ +* [diff-fix] Fix rename detection.\r
+ +* [diff-fix~1] Better common substring algorithm.\r
+ * [master~1] Release candidate #1\r
+++* [master~2] Pretty-print messages.</tt></pre>\r
</div></div>\r
<p>Note that you should not do Octopus because you can. An octopus\r
is a valid thing to do and often makes it easier to view the\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 27-Dec-2005 00:17:02 PDT\r
+Last updated 15-Jan-2006 02:13:30 PDT\r
</div>\r
</div>\r
</body>\r
* [master] Merge work in mybranch
! [mybranch] Some work.
--
-+ [master] Merge work in mybranch
-++ [mybranch] Some work.
+- [master] Merge work in mybranch
+*+ [mybranch] Some work.
------------------------------------------------
The first two lines indicate that it is showing the two branches
the later output lines is used to show commits contained in the
`master` branch, and the second column for the `mybranch`
branch. Three commits are shown along with their log messages.
-All of them have plus `+` characters in the first column, which
+All of them have non blank characters in the first column (`*`
+shows an ordinary commit on the current branch, `.` is a merge commit), which
means they are now part of the `master` branch. Only the "Some
work" commit has the plus `+` character in the second column,
because `mybranch` has not been merged to incorporate these
! [master] Merge work in mybranch
* [mybranch] Merge work in mybranch
--
-++ [master] Merge work in mybranch
+-- [master] Merge work in mybranch
------------------------------------------------
! [master] Merge work in mybranch
* [mybranch] Merge work in mybranch
--
-++ [master] Merge work in mybranch
-++ [master^2] Some work.
-++ [master^] Some fun.
+-- [master] Merge work in mybranch
++* [master^2] Some work.
++* [master^] Some fun.
------------
Remember, before running `git merge`, our `master` head was at
! [mybranch] Some work.
--
+ [mybranch] Some work.
-+ [master] Some fun.
-++ [mybranch^] New day.
+* [master] Some fun.
+*+ [mybranch^] New day.
------------
Now we are ready to experiment with the merge by hand.
+ [diff-fix] Fix rename detection.
+ [diff-fix~1] Better common substring algorithm.
+ [commit-fix] Fix commit message normalization.
- + [master] Release candidate #1
-+++ [diff-fix~2] Pretty-print messages.
+ * [master] Release candidate #1
+++* [diff-fix~2] Pretty-print messages.
------------
Both fixes are tested well, and at this point, you want to merge
! [diff-fix] Fix rename detection.
* [master] Merge fix in commit-fix
---
- + [master] Merge fix in commit-fix
-+ + [commit-fix] Fix commit message normalization.
- + [master~1] Merge fix in diff-fix
- ++ [diff-fix] Fix rename detection.
- ++ [diff-fix~1] Better common substring algorithm.
- + [master~2] Release candidate #1
-+++ [master~3] Pretty-print messages.
+ - [master] Merge fix in commit-fix
++ * [commit-fix] Fix commit message normalization.
+ - [master~1] Merge fix in diff-fix
+ +* [diff-fix] Fix rename detection.
+ +* [diff-fix~1] Better common substring algorithm.
+ * [master~2] Release candidate #1
+++* [master~3] Pretty-print messages.
------------
However, there is no particular reason to merge in one branch
! [diff-fix] Fix rename detection.
* [master] Octopus merge of branches 'diff-fix' and 'commit-fix'
---
- + [master] Octopus merge of branches 'diff-fix' and 'commit-fix'
-+ + [commit-fix] Fix commit message normalization.
- ++ [diff-fix] Fix rename detection.
- ++ [diff-fix~1] Better common substring algorithm.
- + [master~1] Release candidate #1
-+++ [master~2] Pretty-print messages.
+ - [master] Octopus merge of branches 'diff-fix' and 'commit-fix'
++ * [commit-fix] Fix commit message normalization.
+ +* [diff-fix] Fix rename detection.
+ +* [diff-fix~1] Better common substring algorithm.
+ * [master~1] Release candidate #1
+++* [master~2] Pretty-print messages.
------------
Note that you should not do Octopus because you can. An octopus