Merge branch 'ta/doc-no-small-caps'

Update documentation to change "GIT" which was a poor-man's small
caps to "Git".  The latter was the intended spelling.

Also change "git" spelled in all-lowercase to "Git" when it refers
to the system as the whole or the concept it embodies, as opposed to
the command the end users would type.

* ta/doc-no-small-caps:
  Documentation: StGit is the right spelling, not StGIT
  Documentation: describe the "repository" in repository-layout
  Documentation: add a description for 'gitfile' to glossary
  Documentation: do not use undefined terms git-dir and git-file
  Documentation: the name of the system is 'Git', not 'git'
  Documentation: avoid poor-man's small caps GIT
This commit is contained in:
Junio C Hamano 2013-02-05 16:13:32 -08:00
commit e34c7e2b51
137 changed files with 982 additions and 959 deletions

View File

@ -1,5 +1,5 @@
Like other projects, we also have some guidelines to keep to the Like other projects, we also have some guidelines to keep to the
code. For git in general, three rough rules are: code. For Git in general, three rough rules are:
- Most importantly, we never say "It's in POSIX; we'll happily - Most importantly, we never say "It's in POSIX; we'll happily
ignore your needs should your system not conform to it." ignore your needs should your system not conform to it."
@ -22,7 +22,7 @@ code. For git in general, three rough rules are:
As for more concrete guidelines, just imitate the existing code As for more concrete guidelines, just imitate the existing code
(this is a good guideline, no matter which project you are (this is a good guideline, no matter which project you are
contributing to). It is always preferable to match the _local_ contributing to). It is always preferable to match the _local_
convention. New code added to git suite is expected to match convention. New code added to Git suite is expected to match
the overall style of existing code. Modifications to existing the overall style of existing code. Modifications to existing
code is expected to match the style the surrounding code already code is expected to match the style the surrounding code already
uses (even if it doesn't match the overall style of existing code). uses (even if it doesn't match the overall style of existing code).
@ -112,7 +112,7 @@ For C programs:
- We try to keep to at most 80 characters per line. - We try to keep to at most 80 characters per line.
- We try to support a wide range of C compilers to compile git with, - We try to support a wide range of C compilers to compile Git with,
including old ones. That means that you should not use C99 including old ones. That means that you should not use C99
initializers, even if a lot of compilers grok it. initializers, even if a lot of compilers grok it.
@ -164,14 +164,14 @@ For C programs:
- If you are planning a new command, consider writing it in shell - If you are planning a new command, consider writing it in shell
or perl first, so that changes in semantics can be easily or perl first, so that changes in semantics can be easily
changed and discussed. Many git commands started out like changed and discussed. Many Git commands started out like
that, and a few are still scripts. that, and a few are still scripts.
- Avoid introducing a new dependency into git. This means you - Avoid introducing a new dependency into Git. This means you
usually should stay away from scripting languages not already usually should stay away from scripting languages not already
used in the git core command set (unless your command is clearly used in the Git core command set (unless your command is clearly
separate from it, such as an importer to convert random-scm-X separate from it, such as an importer to convert random-scm-X
repositories to git). repositories to Git).
- When we pass <string, length> pair to functions, we should try to - When we pass <string, length> pair to functions, we should try to
pass them in that order. pass them in that order.
@ -230,3 +230,8 @@ Writing Documentation:
valid usage. "*" has its own pair of brackets, because it can valid usage. "*" has its own pair of brackets, because it can
(optionally) be specified only when one or more of the letters is (optionally) be specified only when one or more of the letters is
also provided. also provided.
A note on notation:
Use 'git' (all lowercase) when talking about commands i.e. something
the user would type into a shell and use 'Git' (uppercase first letter)
when talking about the version control system and its properties.

View File

@ -346,8 +346,8 @@ $(patsubst %.txt,%.html,$(wildcard howto/*.txt)): %.html : %.txt
install-webdoc : html install-webdoc : html
'$(SHELL_PATH_SQ)' ./install-webdoc.sh $(WEBDOC_DEST) '$(SHELL_PATH_SQ)' ./install-webdoc.sh $(WEBDOC_DEST)
# You must have a clone of git-htmldocs and git-manpages repositories # You must have a clone of 'git-htmldocs' and 'git-manpages' repositories
# next to the git repository itself for the following to work. # next to the 'git' repository itself for the following to work.
quick-install: quick-install-man quick-install: quick-install-man

View File

@ -103,9 +103,9 @@ without external resources. Instead of giving a URL to a mailing list
archive, summarize the relevant points of the discussion. archive, summarize the relevant points of the discussion.
(3) Generate your patch using git tools out of your commits. (3) Generate your patch using Git tools out of your commits.
git based diff tools generate unidiff which is the preferred format. Git based diff tools generate unidiff which is the preferred format.
You do not have to be afraid to use -M option to "git diff" or You do not have to be afraid to use -M option to "git diff" or
"git format-patch", if your patch involves file renames. The "git format-patch", if your patch involves file renames. The
@ -122,7 +122,7 @@ that is fine, but please mark it as such.
(4) Sending your patches. (4) Sending your patches.
People on the git mailing list need to be able to read and People on the Git mailing list need to be able to read and
comment on the changes you are submitting. It is important for comment on the changes you are submitting. It is important for
a developer to be able to "quote" your changes, using standard a developer to be able to "quote" your changes, using standard
e-mail tools, so that they may comment on specific portions of e-mail tools, so that they may comment on specific portions of
@ -206,7 +206,7 @@ patch.
To improve tracking of who did what, we've borrowed the To improve tracking of who did what, we've borrowed the
"sign-off" procedure from the Linux kernel project on patches "sign-off" procedure from the Linux kernel project on patches
that are being emailed around. Although core GIT is a lot that are being emailed around. Although core Git is a lot
smaller project it is a good discipline to follow it. smaller project it is a good discipline to follow it.
The sign-off is a simple line at the end of the explanation for The sign-off is a simple line at the end of the explanation for
@ -244,7 +244,7 @@ then you just add a line saying
Signed-off-by: Random J Developer <random@developer.example.org> Signed-off-by: Random J Developer <random@developer.example.org>
This line can be automatically added by git if you run the git-commit This line can be automatically added by Git if you run the git-commit
command with the -s option. command with the -s option.
Notice that you can place your own Signed-off-by: line when Notice that you can place your own Signed-off-by: line when
@ -337,7 +337,7 @@ Know the status of your patch after submission
tell you if your patch is merged in pu if you rebase on top of tell you if your patch is merged in pu if you rebase on top of
master). master).
* Read the git mailing list, the maintainer regularly posts messages * Read the Git mailing list, the maintainer regularly posts messages
entitled "What's cooking in git.git" and "What's in git.git" giving entitled "What's cooking in git.git" and "What's in git.git" giving
the status of various proposed changes. the status of various proposed changes.

View File

@ -4,7 +4,7 @@
# #
# Note, {0} is the manpage section, while {target} is the command. # Note, {0} is the manpage section, while {target} is the command.
# #
# Show GIT link as: <command>(<section>); if section is defined, else just show # Show Git link as: <command>(<section>); if section is defined, else just show
# the command. # the command.
[macros] [macros]

View File

@ -95,7 +95,7 @@ of lines before or after the line given by <start>.
running extra passes of inspection. running extra passes of inspection.
+ +
<num> is optional but it is the lower bound on the number of <num> is optional but it is the lower bound on the number of
alphanumeric characters that git must detect as moving/copying alphanumeric characters that Git must detect as moving/copying
within a file for it to associate those lines with the parent within a file for it to associate those lines with the parent
commit. The default value is 20. commit. The default value is 20.
@ -110,7 +110,7 @@ commit. The default value is 20.
looks for copies from other files in any commit. looks for copies from other files in any commit.
+ +
<num> is optional but it is the lower bound on the number of <num> is optional but it is the lower bound on the number of
alphanumeric characters that git must detect as moving/copying alphanumeric characters that Git must detect as moving/copying
between files for it to associate those lines with the parent between files for it to associate those lines with the parent
commit. And the default value is 40. If there are more than one commit. And the default value is 40. If there are more than one
`-C` options given, the <num> argument of the last `-C` will `-C` options given, the <num> argument of the last `-C` will

View File

@ -1,14 +1,14 @@
CONFIGURATION FILE CONFIGURATION FILE
------------------ ------------------
The git configuration file contains a number of variables that affect The Git configuration file contains a number of variables that affect
the git command's behavior. The `.git/config` file in each repository the Git commands' behavior. The `.git/config` file in each repository
is used to store the configuration for that repository, and is used to store the configuration for that repository, and
`$HOME/.gitconfig` is used to store a per-user configuration as `$HOME/.gitconfig` is used to store a per-user configuration as
fallback values for the `.git/config` file. The file `/etc/gitconfig` fallback values for the `.git/config` file. The file `/etc/gitconfig`
can be used to store a system-wide default configuration. can be used to store a system-wide default configuration.
The configuration variables are used by both the git plumbing The configuration variables are used by both the Git plumbing
and the porcelains. The variables are divided into sections, wherein and the porcelains. The variables are divided into sections, wherein
the fully qualified variable name of the variable itself is the last the fully qualified variable name of the variable itself is the last
dot-separated segment and the section name is everything before the last dot-separated segment and the section name is everything before the last
@ -219,9 +219,9 @@ core.ignoreCygwinFSTricks::
core.ignorecase:: core.ignorecase::
If true, this option enables various workarounds to enable If true, this option enables various workarounds to enable
git to work better on filesystems that are not case sensitive, Git to work better on filesystems that are not case sensitive,
like FAT. For example, if a directory listing finds like FAT. For example, if a directory listing finds
"makefile" when git expects "Makefile", git will assume "makefile" when Git expects "Makefile", Git will assume
it is really the same file, and continue to remember it as it is really the same file, and continue to remember it as
"Makefile". "Makefile".
+ +
@ -230,13 +230,13 @@ will probe and set core.ignorecase true if appropriate when the repository
is created. is created.
core.precomposeunicode:: core.precomposeunicode::
This option is only used by Mac OS implementation of git. This option is only used by Mac OS implementation of Git.
When core.precomposeunicode=true, git reverts the unicode decomposition When core.precomposeunicode=true, Git reverts the unicode decomposition
of filenames done by Mac OS. This is useful when sharing a repository of filenames done by Mac OS. This is useful when sharing a repository
between Mac OS and Linux or Windows. between Mac OS and Linux or Windows.
(Git for Windows 1.7.10 or higher is needed, or git under cygwin 1.7). (Git for Windows 1.7.10 or higher is needed, or Git under cygwin 1.7).
When false, file names are handled fully transparent by git, When false, file names are handled fully transparent by Git,
which is backward compatible with older versions of git. which is backward compatible with older versions of Git.
core.trustctime:: core.trustctime::
If false, the ctime differences between the index and the If false, the ctime differences between the index and the
@ -272,20 +272,20 @@ core.eol::
conversion. conversion.
core.safecrlf:: core.safecrlf::
If true, makes git check if converting `CRLF` is reversible when If true, makes Git check if converting `CRLF` is reversible when
end-of-line conversion is active. Git will verify if a command end-of-line conversion is active. Git will verify if a command
modifies a file in the work tree either directly or indirectly. modifies a file in the work tree either directly or indirectly.
For example, committing a file followed by checking out the For example, committing a file followed by checking out the
same file should yield the original file in the work tree. If same file should yield the original file in the work tree. If
this is not the case for the current setting of this is not the case for the current setting of
`core.autocrlf`, git will reject the file. The variable can `core.autocrlf`, Git will reject the file. The variable can
be set to "warn", in which case git will only warn about an be set to "warn", in which case Git will only warn about an
irreversible conversion but continue the operation. irreversible conversion but continue the operation.
+ +
CRLF conversion bears a slight chance of corrupting data. CRLF conversion bears a slight chance of corrupting data.
When it is enabled, git will convert CRLF to LF during commit and LF to When it is enabled, Git will convert CRLF to LF during commit and LF to
CRLF during checkout. A file that contains a mixture of LF and CRLF during checkout. A file that contains a mixture of LF and
CRLF before the commit cannot be recreated by git. For text CRLF before the commit cannot be recreated by Git. For text
files this is the right thing to do: it corrects line endings files this is the right thing to do: it corrects line endings
such that we have only LF line endings in the repository. such that we have only LF line endings in the repository.
But for binary files that are accidentally classified as text the But for binary files that are accidentally classified as text the
@ -295,7 +295,7 @@ If you recognize such corruption early you can easily fix it by
setting the conversion type explicitly in .gitattributes. Right setting the conversion type explicitly in .gitattributes. Right
after committing you still have the original file in your work after committing you still have the original file in your work
tree and this file is not yet corrupted. You can explicitly tell tree and this file is not yet corrupted. You can explicitly tell
git that this file is binary and git will handle the file Git that this file is binary and Git will handle the file
appropriately. appropriately.
+ +
Unfortunately, the desired effect of cleaning up text files with Unfortunately, the desired effect of cleaning up text files with
@ -340,7 +340,7 @@ is created.
core.gitProxy:: core.gitProxy::
A "proxy command" to execute (as 'command host port') instead A "proxy command" to execute (as 'command host port') instead
of establishing direct connection to the remote server when of establishing direct connection to the remote server when
using the git protocol for fetching. If the variable value is using the Git protocol for fetching. If the variable value is
in the "COMMAND for DOMAIN" format, the command is applied only in the "COMMAND for DOMAIN" format, the command is applied only
on hostnames ending with the specified domain string. This variable on hostnames ending with the specified domain string. This variable
may be set multiple times and is matched in the given order; may be set multiple times and is matched in the given order;
@ -399,7 +399,7 @@ Note that this variable is honored even when set in a configuration
file in a ".git" subdirectory of a directory and its value differs file in a ".git" subdirectory of a directory and its value differs
from the latter directory (e.g. "/path/to/.git/config" has from the latter directory (e.g. "/path/to/.git/config" has
core.worktree set to "/different/path"), which is most likely a core.worktree set to "/different/path"), which is most likely a
misconfiguration. Running git commands in the "/path/to" directory will misconfiguration. Running Git commands in the "/path/to" directory will
still use "/different/path" as the root of the work tree and can cause still use "/different/path" as the root of the work tree and can cause
confusion unless you know what you are doing (e.g. you are creating a confusion unless you know what you are doing (e.g. you are creating a
read-only snapshot of the same index to a location different from the read-only snapshot of the same index to a location different from the
@ -431,7 +431,7 @@ core.sharedRepository::
several users in a group (making sure all the files and objects are several users in a group (making sure all the files and objects are
group-writable). When 'all' (or 'world' or 'everybody'), the group-writable). When 'all' (or 'world' or 'everybody'), the
repository will be readable by all users, additionally to being repository will be readable by all users, additionally to being
group-shareable. When 'umask' (or 'false'), git will use permissions group-shareable. When 'umask' (or 'false'), Git will use permissions
reported by umask(2). When '0xxx', where '0xxx' is an octal number, reported by umask(2). When '0xxx', where '0xxx' is an octal number,
files in the repository will have this mode value. '0xxx' will override files in the repository will have this mode value. '0xxx' will override
user's umask value (whereas the other options will only override user's umask value (whereas the other options will only override
@ -442,7 +442,7 @@ core.sharedRepository::
See linkgit:git-init[1]. False by default. See linkgit:git-init[1]. False by default.
core.warnAmbiguousRefs:: core.warnAmbiguousRefs::
If true, git will warn you if the ref name you passed it is ambiguous If true, Git will warn you if the ref name you passed it is ambiguous
and might match multiple refs in the .git/refs/ tree. True by default. and might match multiple refs in the .git/refs/ tree. True by default.
core.compression:: core.compression::
@ -514,7 +514,7 @@ Common unit suffixes of 'k', 'm', or 'g' are supported.
core.excludesfile:: core.excludesfile::
In addition to '.gitignore' (per-directory) and In addition to '.gitignore' (per-directory) and
'.git/info/exclude', git looks into this file for patterns '.git/info/exclude', Git looks into this file for patterns
of files which are not meant to be tracked. "`~/`" is expanded of files which are not meant to be tracked. "`~/`" is expanded
to the value of `$HOME` and "`~user/`" to the specified user's to the value of `$HOME` and "`~user/`" to the specified user's
home directory. Its default value is $XDG_CONFIG_HOME/git/ignore. home directory. Its default value is $XDG_CONFIG_HOME/git/ignore.
@ -532,7 +532,7 @@ core.askpass::
core.attributesfile:: core.attributesfile::
In addition to '.gitattributes' (per-directory) and In addition to '.gitattributes' (per-directory) and
'.git/info/attributes', git looks into this file for attributes '.git/info/attributes', Git looks into this file for attributes
(see linkgit:gitattributes[5]). Path expansions are made the same (see linkgit:gitattributes[5]). Path expansions are made the same
way as for `core.excludesfile`. Its default value is way as for `core.excludesfile`. Its default value is
$XDG_CONFIG_HOME/git/attributes. If $XDG_CONFIG_HOME is either not $XDG_CONFIG_HOME/git/attributes. If $XDG_CONFIG_HOME is either not
@ -557,9 +557,9 @@ sequence.editor::
When not configured the default commit message editor is used instead. When not configured the default commit message editor is used instead.
core.pager:: core.pager::
The command that git will use to paginate output. Can The command that Git will use to paginate output. Can
be overridden with the `GIT_PAGER` environment be overridden with the `GIT_PAGER` environment
variable. Note that git sets the `LESS` environment variable. Note that Git sets the `LESS` environment
variable to `FRSX` if it is unset when it runs the variable to `FRSX` if it is unset when it runs the
pager. One can change these settings by setting the pager. One can change these settings by setting the
`LESS` variable to some other value. Alternately, `LESS` variable to some other value. Alternately,
@ -567,11 +567,11 @@ core.pager::
global basis by setting the `core.pager` option. global basis by setting the `core.pager` option.
Setting `core.pager` has no effect on the `LESS` Setting `core.pager` has no effect on the `LESS`
environment variable behaviour above, so if you want environment variable behaviour above, so if you want
to override git's default settings this way, you need to override Git's default settings this way, you need
to be explicit. For example, to disable the S option to be explicit. For example, to disable the S option
in a backward compatible manner, set `core.pager` in a backward compatible manner, set `core.pager`
to `less -+S`. This will be passed to the shell by to `less -+S`. This will be passed to the shell by
git, which will translate the final command to Git, which will translate the final command to
`LESS=FRSX less -+S`. `LESS=FRSX less -+S`.
core.whitespace:: core.whitespace::
@ -600,7 +600,7 @@ core.whitespace::
does not trigger if the character before such a carriage-return does not trigger if the character before such a carriage-return
is not a whitespace (not enabled by default). is not a whitespace (not enabled by default).
* `tabwidth=<n>` tells how many character positions a tab occupies; this * `tabwidth=<n>` tells how many character positions a tab occupies; this
is relevant for `indent-with-non-tab` and when git fixes `tab-in-indent` is relevant for `indent-with-non-tab` and when Git fixes `tab-in-indent`
errors. The default tab width is 8. Allowed values are 1 to 63. errors. The default tab width is 8. Allowed values are 1 to 63.
core.fsyncobjectfiles:: core.fsyncobjectfiles::
@ -616,7 +616,7 @@ core.preloadindex::
+ +
This can speed up operations like 'git diff' and 'git status' especially This can speed up operations like 'git diff' and 'git status' especially
on filesystems like NFS that have weak caching semantics and thus on filesystems like NFS that have weak caching semantics and thus
relatively high IO latencies. With this set to 'true', git will do the relatively high IO latencies. With this set to 'true', Git will do the
index comparison to the filesystem data in parallel, allowing index comparison to the filesystem data in parallel, allowing
overlapping IO's. overlapping IO's.
@ -652,9 +652,9 @@ add.ignore-errors::
add.ignoreErrors:: add.ignoreErrors::
Tells 'git add' to continue adding files when some files cannot be Tells 'git add' to continue adding files when some files cannot be
added due to indexing errors. Equivalent to the '--ignore-errors' added due to indexing errors. Equivalent to the '--ignore-errors'
option of linkgit:git-add[1]. Older versions of git accept only option of linkgit:git-add[1]. Older versions of Git accept only
`add.ignore-errors`, which does not follow the usual naming `add.ignore-errors`, which does not follow the usual naming
convention for configuration variables. Newer versions of git convention for configuration variables. Newer versions of Git
honor `add.ignoreErrors` as well. honor `add.ignoreErrors` as well.
alias.*:: alias.*::
@ -662,7 +662,7 @@ alias.*::
after defining "alias.last = cat-file commit HEAD", the invocation after defining "alias.last = cat-file commit HEAD", the invocation
"git last" is equivalent to "git cat-file commit HEAD". To avoid "git last" is equivalent to "git cat-file commit HEAD". To avoid
confusion and troubles with script usage, aliases that confusion and troubles with script usage, aliases that
hide existing git commands are ignored. Arguments are split by hide existing Git commands are ignored. Arguments are split by
spaces, the usual shell quoting and escaping is supported. spaces, the usual shell quoting and escaping is supported.
quote pair and a backslash can be used to quote them. quote pair and a backslash can be used to quote them.
+ +
@ -709,7 +709,7 @@ branch.autosetupmerge::
branch.autosetuprebase:: branch.autosetuprebase::
When a new branch is created with 'git branch' or 'git checkout' When a new branch is created with 'git branch' or 'git checkout'
that tracks another branch, this variable tells git to set that tracks another branch, this variable tells Git to set
up pull to rebase instead of merge (see "branch.<name>.rebase"). up pull to rebase instead of merge (see "branch.<name>.rebase").
When `never`, rebase is never automatically set to true. When `never`, rebase is never automatically set to true.
When `local`, rebase is set to true for tracked branches of When `local`, rebase is set to true for tracked branches of
@ -890,7 +890,7 @@ color.status.<slot>::
one of `header` (the header text of the status message), one of `header` (the header text of the status message),
`added` or `updated` (files which are added but not committed), `added` or `updated` (files which are added but not committed),
`changed` (files which are changed but not added in the index), `changed` (files which are changed but not added in the index),
`untracked` (files which are not tracked by git), `untracked` (files which are not tracked by Git),
`branch` (the current branch), or `branch` (the current branch), or
`nobranch` (the color the 'no branch' warning is shown in, defaulting `nobranch` (the color the 'no branch' warning is shown in, defaulting
to red). The values of these variables may be specified as in to red). The values of these variables may be specified as in
@ -904,7 +904,7 @@ color.ui::
to `always` if you want all output not intended for machine to `always` if you want all output not intended for machine
consumption to use color, to `true` or `auto` if you want such consumption to use color, to `true` or `auto` if you want such
output to use color when written to the terminal, or to `false` or output to use color when written to the terminal, or to `false` or
`never` if you prefer git commands not to use color unless enabled `never` if you prefer Git commands not to use color unless enabled
explicitly with some other configuration or the `--color` option. explicitly with some other configuration or the `--color` option.
column.ui:: column.ui::
@ -1021,7 +1021,7 @@ fetch.fsckObjects::
is used instead. is used instead.
fetch.unpackLimit:: fetch.unpackLimit::
If the number of objects fetched over the git native If the number of objects fetched over the Git native
transfer is below this transfer is below this
limit, then the objects will be unpacked into loose object limit, then the objects will be unpacked into loose object
files. However if the number of received objects equals or files. However if the number of received objects equals or
@ -1061,7 +1061,7 @@ format.subjectprefix::
format.signature:: format.signature::
The default for format-patch is to output a signature containing The default for format-patch is to output a signature containing
the git version number. Use this variable to change that default. the Git version number. Use this variable to change that default.
Set this variable to the empty string ("") to suppress Set this variable to the empty string ("") to suppress
signature generation. signature generation.
@ -1174,7 +1174,7 @@ gitcvs.logfile::
gitcvs.usecrlfattr:: gitcvs.usecrlfattr::
If true, the server will look up the end-of-line conversion If true, the server will look up the end-of-line conversion
attributes for files to determine the '-k' modes to use. If attributes for files to determine the '-k' modes to use. If
the attributes force git to treat a file as text, the attributes force Git to treat a file as text,
the '-k' mode will be left blank so CVS clients will the '-k' mode will be left blank so CVS clients will
treat it as text. If they suppress text conversion, the file treat it as text. If they suppress text conversion, the file
will be set with '-kb' mode, which suppresses any newline munging will be set with '-kb' mode, which suppresses any newline munging
@ -1194,7 +1194,7 @@ gitcvs.allbinary::
gitcvs.dbname:: gitcvs.dbname::
Database used by git-cvsserver to cache revision information Database used by git-cvsserver to cache revision information
derived from the git repository. The exact meaning depends on the derived from the Git repository. The exact meaning depends on the
used database driver, for SQLite (which is the default driver) this used database driver, for SQLite (which is the default driver) this
is a filename. Supports variable substitution (see is a filename. Supports variable substitution (see
linkgit:git-cvsserver[1] for details). May not contain semicolons (`;`). linkgit:git-cvsserver[1] for details). May not contain semicolons (`;`).
@ -1406,7 +1406,7 @@ http.proxy::
http.cookiefile:: http.cookiefile::
File containing previously stored cookie lines which should be used File containing previously stored cookie lines which should be used
in the git http session, if they match the server. The file format in the Git http session, if they match the server. The file format
of the file to read cookies from should be plain HTTP headers or of the file to read cookies from should be plain HTTP headers or
the Netscape/Mozilla cookie file format (see linkgit:curl[1]). the Netscape/Mozilla cookie file format (see linkgit:curl[1]).
NOTE that the file specified with http.cookiefile is only used as NOTE that the file specified with http.cookiefile is only used as
@ -1428,7 +1428,7 @@ http.sslKey::
variable. variable.
http.sslCertPasswordProtected:: http.sslCertPasswordProtected::
Enable git's password prompt for the SSL certificate. Otherwise Enable Git's password prompt for the SSL certificate. Otherwise
OpenSSL will prompt the user, possibly many times, if the OpenSSL will prompt the user, possibly many times, if the
certificate or private key is encrypted. Can be overridden by the certificate or private key is encrypted. Can be overridden by the
'GIT_SSL_CERT_PASSWORD_PROTECTED' environment variable. 'GIT_SSL_CERT_PASSWORD_PROTECTED' environment variable.
@ -1475,7 +1475,7 @@ http.noEPSV::
http.useragent:: http.useragent::
The HTTP USER_AGENT string presented to an HTTP server. The default The HTTP USER_AGENT string presented to an HTTP server. The default
value represents the version of the client git such as git/1.7.1. value represents the version of the client Git such as git/1.7.1.
This option allows you to override this value to a more common value This option allows you to override this value to a more common value
such as Mozilla/4.0. This may be necessary, for instance, if such as Mozilla/4.0. This may be necessary, for instance, if
connecting through a firewall that restricts HTTP connections to a set connecting through a firewall that restricts HTTP connections to a set
@ -1483,7 +1483,7 @@ http.useragent::
Can be overridden by the 'GIT_HTTP_USER_AGENT' environment variable. Can be overridden by the 'GIT_HTTP_USER_AGENT' environment variable.
i18n.commitEncoding:: i18n.commitEncoding::
Character encoding the commit messages are stored in; git itself Character encoding the commit messages are stored in; Git itself
does not care per se, but this information is necessary e.g. when does not care per se, but this information is necessary e.g. when
importing commits from emails or in the gitk graphical history importing commits from emails or in the gitk graphical history
browser (and possibly at other places in the future or in other browser (and possibly at other places in the future or in other
@ -1621,7 +1621,7 @@ mergetool.keepBackup::
`true` (i.e. keep the backup files). `true` (i.e. keep the backup files).
mergetool.keepTemporaries:: mergetool.keepTemporaries::
When invoking a custom merge tool, git uses a set of temporary When invoking a custom merge tool, Git uses a set of temporary
files to pass to the tool. If the tool returns an error and this files to pass to the tool. If the tool returns an error and this
variable is set to `true`, then these temporary files will be variable is set to `true`, then these temporary files will be
preserved, otherwise they will be removed after the tool has preserved, otherwise they will be removed after the tool has
@ -1649,7 +1649,7 @@ displayed.
notes.rewrite.<command>:: notes.rewrite.<command>::
When rewriting commits with <command> (currently `amend` or When rewriting commits with <command> (currently `amend` or
`rebase`) and this variable is set to `true`, git `rebase`) and this variable is set to `true`, Git
automatically copies your notes from the original to the automatically copies your notes from the original to the
rewritten commit. Defaults to `true`, but see rewritten commit. Defaults to `true`, but see
"notes.rewriteRef" below. "notes.rewriteRef" below.
@ -1729,7 +1729,7 @@ pack.threads::
warning. This is meant to reduce packing time on multiprocessor warning. This is meant to reduce packing time on multiprocessor
machines. The required amount of memory for the delta search window machines. The required amount of memory for the delta search window
is however multiplied by the number of threads. is however multiplied by the number of threads.
Specifying 0 will cause git to auto-detect the number of CPU's Specifying 0 will cause Git to auto-detect the number of CPU's
and set the number of threads accordingly. and set the number of threads accordingly.
pack.indexVersion:: pack.indexVersion::
@ -1741,11 +1741,11 @@ pack.indexVersion::
and this config option ignored whenever the corresponding pack is and this config option ignored whenever the corresponding pack is
larger than 2 GB. larger than 2 GB.
+ +
If you have an old git that does not understand the version 2 `*.idx` file, If you have an old Git that does not understand the version 2 `*.idx` file,
cloning or fetching over a non native protocol (e.g. "http" and "rsync") cloning or fetching over a non native protocol (e.g. "http" and "rsync")
that will copy both `*.pack` file and corresponding `*.idx` file from the that will copy both `*.pack` file and corresponding `*.idx` file from the
other side may give you a repository that cannot be accessed with your other side may give you a repository that cannot be accessed with your
older version of git. If the `*.pack` file is smaller than 2 GB, however, older version of Git. If the `*.pack` file is smaller than 2 GB, however,
you can use linkgit:git-index-pack[1] on the *.pack file to regenerate you can use linkgit:git-index-pack[1] on the *.pack file to regenerate
the `*.idx` file. the `*.idx` file.
@ -1760,7 +1760,7 @@ pack.packSizeLimit::
pager.<cmd>:: pager.<cmd>::
If the value is boolean, turns on or off pagination of the If the value is boolean, turns on or off pagination of the
output of a particular git subcommand when writing to a tty. output of a particular Git subcommand when writing to a tty.
Otherwise, turns on pagination for the subcommand using the Otherwise, turns on pagination for the subcommand using the
pager specified by the value of `pager.<cmd>`. If `--paginate` pager specified by the value of `pager.<cmd>`. If `--paginate`
or `--no-pager` is specified on the command line, it takes or `--no-pager` is specified on the command line, it takes
@ -1795,7 +1795,7 @@ pull.twohead::
The default merge strategy to use when pulling a single branch. The default merge strategy to use when pulling a single branch.
push.default:: push.default::
Defines the action git push should take if no refspec is given Defines the action `git push` should take if no refspec is given
on the command line, no refspec is configured in the remote, and on the command line, no refspec is configured in the remote, and
no refspec is implied by any of the options given on the command no refspec is implied by any of the options given on the command
line. Possible values are: line. Possible values are:
@ -1935,7 +1935,7 @@ remote.<name>.tagopt::
linkgit:git-fetch[1]. linkgit:git-fetch[1].
remote.<name>.vcs:: remote.<name>.vcs::
Setting this to a value <vcs> will cause git to interact with Setting this to a value <vcs> will cause Git to interact with
the remote with the git-remote-<vcs> helper. the remote with the git-remote-<vcs> helper.
remotes.<group>:: remotes.<group>::
@ -1945,9 +1945,9 @@ remotes.<group>::
repack.usedeltabaseoffset:: repack.usedeltabaseoffset::
By default, linkgit:git-repack[1] creates packs that use By default, linkgit:git-repack[1] creates packs that use
delta-base offset. If you need to share your repository with delta-base offset. If you need to share your repository with
git older than version 1.4.4, either directly or via a dumb Git older than version 1.4.4, either directly or via a dumb
protocol such as http, then you need to set this option to protocol such as http, then you need to set this option to
"false" and repack. Access from old git versions over the "false" and repack. Access from old Git versions over the
native protocol are unaffected by this option. native protocol are unaffected by this option.
rerere.autoupdate:: rerere.autoupdate::
@ -2016,7 +2016,7 @@ showbranch.default::
status.relativePaths:: status.relativePaths::
By default, linkgit:git-status[1] shows paths relative to the By default, linkgit:git-status[1] shows paths relative to the
current directory. Setting this variable to `false` shows paths current directory. Setting this variable to `false` shows paths
relative to the repository root (this was the default for git relative to the repository root (this was the default for Git
prior to v1.5.4). prior to v1.5.4).
status.showUntrackedFiles:: status.showUntrackedFiles::
@ -2103,7 +2103,7 @@ url.<base>.insteadOf::
large number of repositories, and serves them with multiple large number of repositories, and serves them with multiple
access methods, and some users need to use different access access methods, and some users need to use different access
methods, this feature allows people to specify any of the methods, this feature allows people to specify any of the
equivalent URLs and have git automatically rewrite the URL to equivalent URLs and have Git automatically rewrite the URL to
the best alternative for the particular user, even for a the best alternative for the particular user, even for a
never-before-seen repository on the site. When more than one never-before-seen repository on the site. When more than one
insteadOf strings match a given URL, the longest match is used. insteadOf strings match a given URL, the longest match is used.
@ -2114,11 +2114,11 @@ url.<base>.pushInsteadOf::
resulting URL will be pushed to. In cases where some site serves resulting URL will be pushed to. In cases where some site serves
a large number of repositories, and serves them with multiple a large number of repositories, and serves them with multiple
access methods, some of which do not allow push, this feature access methods, some of which do not allow push, this feature
allows people to specify a pull-only URL and have git allows people to specify a pull-only URL and have Git
automatically use an appropriate URL to push, even for a automatically use an appropriate URL to push, even for a
never-before-seen repository on the site. When more than one never-before-seen repository on the site. When more than one
pushInsteadOf strings match a given URL, the longest match is pushInsteadOf strings match a given URL, the longest match is
used. If a remote has an explicit pushurl, git will ignore this used. If a remote has an explicit pushurl, Git will ignore this
setting for that remote. setting for that remote.
user.email:: user.email::

View File

@ -99,7 +99,7 @@ diff.renameLimit::
detection; equivalent to the 'git diff' option '-l'. detection; equivalent to the 'git diff' option '-l'.
diff.renames:: diff.renames::
Tells git to detect renames. If set to any boolean value, it Tells Git to detect renames. If set to any boolean value, it
will enable basic rename detection. If set to "copies" or will enable basic rename detection. If set to "copies" or
"copy", it will detect copies, as well. "copy", it will detect copies, as well.

View File

@ -283,7 +283,7 @@ few lines that happen to match textually as the context, but as a
single deletion of everything old followed by a single insertion of single deletion of everything old followed by a single insertion of
everything new, and the number `m` controls this aspect of the -B everything new, and the number `m` controls this aspect of the -B
option (defaults to 60%). `-B/70%` specifies that less than 30% of the option (defaults to 60%). `-B/70%` specifies that less than 30% of the
original should remain in the result for git to consider it a total original should remain in the result for Git to consider it a total
rewrite (i.e. otherwise the resulting patch will be a series of rewrite (i.e. otherwise the resulting patch will be a series of
deletion and insertion mixed together with context lines). deletion and insertion mixed together with context lines).
+ +
@ -307,7 +307,7 @@ ifdef::git-log[]
endif::git-log[] endif::git-log[]
If `n` is specified, it is a threshold on the similarity If `n` is specified, it is a threshold on the similarity
index (i.e. amount of addition/deletions compared to the index (i.e. amount of addition/deletions compared to the
file's size). For example, `-M90%` means git should consider a file's size). For example, `-M90%` means Git should consider a
delete/add pair to be a rename if more than 90% of the file delete/add pair to be a rename if more than 90% of the file
hasn't changed. Without a `%` sign, the number is to be read as hasn't changed. Without a `%` sign, the number is to be read as
a fraction, with a decimal point before it. I.e., `-M5` becomes a fraction, with a decimal point before it. I.e., `-M5` becomes

View File

@ -1,4 +1,4 @@
Everyday GIT With 20 Commands Or So Everyday Git With 20 Commands Or So
=================================== ===================================
<<Individual Developer (Standalone)>> commands are essential for <<Individual Developer (Standalone)>> commands are essential for
@ -12,7 +12,7 @@ commands in addition to the above.
<<Repository Administration>> commands are for system <<Repository Administration>> commands are for system
administrators who are responsible for the care and feeding administrators who are responsible for the care and feeding
of git repositories. of Git repositories.
Individual Developer (Standalone)[[Individual Developer (Standalone)]] Individual Developer (Standalone)[[Individual Developer (Standalone)]]
@ -87,7 +87,7 @@ $ git log v2.43.. curses/ <12>
+ +
<1> create a new topic branch. <1> create a new topic branch.
<2> revert your botched changes in `curses/ux_audio_oss.c`. <2> revert your botched changes in `curses/ux_audio_oss.c`.
<3> you need to tell git if you added a new file; removal and <3> you need to tell Git if you added a new file; removal and
modification will be caught if you do `git commit -a` later. modification will be caught if you do `git commit -a` later.
<4> to see what changes you are committing. <4> to see what changes you are committing.
<5> commit everything as you have tested, with your sign-off. <5> commit everything as you have tested, with your sign-off.
@ -229,7 +229,7 @@ commands in addition to the ones needed by participants.
Examples Examples
~~~~~~~~ ~~~~~~~~
My typical GIT day.:: My typical Git day.::
+ +
------------ ------------
$ git status <1> $ git status <1>
@ -332,7 +332,7 @@ Run git-daemon to serve /pub/scm from xinetd.::
------------ ------------
$ cat /etc/xinetd.d/git-daemon $ cat /etc/xinetd.d/git-daemon
# default: off # default: off
# description: The git server offers access to git repositories # description: The Git server offers access to Git repositories
service git service git
{ {
disable = no disable = no

View File

@ -24,7 +24,7 @@ Reads the supplied diff output (i.e. "a patch") and applies it to files.
With the `--index` option the patch is also applied to the index, and With the `--index` option the patch is also applied to the index, and
with the `--cached` option the patch is only applied to the index. with the `--cached` option the patch is only applied to the index.
Without these options, the command applies the patch only to files, Without these options, the command applies the patch only to files,
and does not require them to be in a git repository. and does not require them to be in a Git repository.
This command applies the patch but does not create a commit. Use This command applies the patch but does not create a commit. Use
linkgit:git-am[1] to create commits from patches generated by linkgit:git-am[1] to create commits from patches generated by
@ -198,7 +198,7 @@ behavior:
* `fix` outputs warnings for a few such errors, and applies the * `fix` outputs warnings for a few such errors, and applies the
patch after fixing them (`strip` is a synonym --- the tool patch after fixing them (`strip` is a synonym --- the tool
used to consider only trailing whitespace characters as errors, and the used to consider only trailing whitespace characters as errors, and the
fix involved 'stripping' them, but modern gits do more). fix involved 'stripping' them, but modern Gits do more).
* `error` outputs warnings for a few such errors, and refuses * `error` outputs warnings for a few such errors, and refuses
to apply the patch. to apply the patch.
* `error-all` is similar to `error` but shows all errors. * `error-all` is similar to `error` but shows all errors.

View File

@ -3,7 +3,7 @@ git-archimport(1)
NAME NAME
---- ----
git-archimport - Import an Arch repository into git git-archimport - Import an Arch repository into Git
SYNOPSIS SYNOPSIS
@ -40,13 +40,13 @@ directory. To follow the development of a project that uses Arch, rerun
incremental imports. incremental imports.
While 'git archimport' will try to create sensible branch names for the While 'git archimport' will try to create sensible branch names for the
archives that it imports, it is also possible to specify git branch names archives that it imports, it is also possible to specify Git branch names
manually. To do so, write a git branch name after each <archive/branch> manually. To do so, write a Git branch name after each <archive/branch>
parameter, separated by a colon. This way, you can shorten the Arch parameter, separated by a colon. This way, you can shorten the Arch
branch names and convert Arch jargon to git jargon, for example mapping a branch names and convert Arch jargon to Git jargon, for example mapping a
"PROJECT{litdd}devo{litdd}VERSION" branch to "master". "PROJECT{litdd}devo{litdd}VERSION" branch to "master".
Associating multiple Arch branches to one git branch is possible; the Associating multiple Arch branches to one Git branch is possible; the
result will make the most sense only if no commits are made to the first result will make the most sense only if no commits are made to the first
branch, after the second branch is created. Still, this is useful to branch, after the second branch is created. Still, this is useful to
convert Arch repositories that had been rotated periodically. convert Arch repositories that had been rotated periodically.
@ -54,14 +54,14 @@ convert Arch repositories that had been rotated periodically.
MERGES MERGES
------ ------
Patch merge data from Arch is used to mark merges in git as well. git Patch merge data from Arch is used to mark merges in Git as well. Git
does not care much about tracking patches, and only considers a merge when a does not care much about tracking patches, and only considers a merge when a
branch incorporates all the commits since the point they forked. The end result branch incorporates all the commits since the point they forked. The end result
is that git will have a good idea of how far branches have diverged. So the is that Git will have a good idea of how far branches have diverged. So the
import process does lose some patch-trading metadata. import process does lose some patch-trading metadata.
Fortunately, when you try and merge branches imported from Arch, Fortunately, when you try and merge branches imported from Arch,
git will find a good merge base, and it has a good chance of identifying Git will find a good merge base, and it has a good chance of identifying
patches that have been traded out-of-sequence between the branches. patches that have been traded out-of-sequence between the branches.
OPTIONS OPTIONS

View File

@ -128,7 +128,7 @@ export-ignore::
added to archive files. See linkgit:gitattributes[5] for details. added to archive files. See linkgit:gitattributes[5] for details.
export-subst:: export-subst::
If the attribute export-subst is set for a file then git will If the attribute export-subst is set for a file then Git will
expand several placeholders when adding this file to an archive. expand several placeholders when adding this file to an archive.
See linkgit:gitattributes[5] for details. See linkgit:gitattributes[5] for details.

View File

@ -224,7 +224,7 @@ Note that the example that we will use is really a toy example, we
will be looking for the first commit that has a version like will be looking for the first commit that has a version like
"2.6.26-something", that is the commit that has a "SUBLEVEL = 26" line "2.6.26-something", that is the commit that has a "SUBLEVEL = 26" line
in the top level Makefile. This is a toy example because there are in the top level Makefile. This is a toy example because there are
better ways to find this commit with git than using "git bisect" (for better ways to find this commit with Git than using "git bisect" (for
example "git blame" or "git log -S<string>"). example "git blame" or "git log -S<string>").
Driving a bisection manually Driving a bisection manually
@ -455,7 +455,7 @@ So only the W and B commits will be kept. Because commits X and Y will
have been removed by rules a) and b) respectively, and because commits have been removed by rules a) and b) respectively, and because commits
G are removed by rule b) too. G are removed by rule b) too.
Note for git users, that it is equivalent as keeping only the commit Note for Git users, that it is equivalent as keeping only the commit
given by: given by:
------------- -------------
@ -710,8 +710,8 @@ Skip algorithm discussed
After step 7) (in the skip algorithm), we could check if the second After step 7) (in the skip algorithm), we could check if the second
commit has been skipped and return it if it is not the case. And in commit has been skipped and return it if it is not the case. And in
fact that was the algorithm we used from when "git bisect skip" was fact that was the algorithm we used from when "git bisect skip" was
developed in git version 1.5.4 (released on February 1st 2008) until developed in Git version 1.5.4 (released on February 1st 2008) until
git version 1.6.4 (released July 29th 2009). Git version 1.6.4 (released July 29th 2009).
But Ingo Molnar and H. Peter Anvin (another well known linux kernel But Ingo Molnar and H. Peter Anvin (another well known linux kernel
developer) both complained that sometimes the best bisection points developer) both complained that sometimes the best bisection points
@ -1025,10 +1025,10 @@ And here is what Andreas said about this work-flow <<5>>:
_____________ _____________
To give some hard figures, we used to have an average report-to-fix To give some hard figures, we used to have an average report-to-fix
cycle of 142.6 hours (according to our somewhat weird bug-tracker cycle of 142.6 hours (according to our somewhat weird bug-tracker
which just measures wall-clock time). Since we moved to git, we've which just measures wall-clock time). Since we moved to Git, we've
lowered that to 16.2 hours. Primarily because we can stay on top of lowered that to 16.2 hours. Primarily because we can stay on top of
the bug fixing now, and because everyone's jockeying to get to fix the bug fixing now, and because everyone's jockeying to get to fix
bugs (we're quite proud of how lazy we are to let git find the bugs bugs (we're quite proud of how lazy we are to let Git find the bugs
for us). Each new release results in ~40% fewer bugs (almost certainly for us). Each new release results in ~40% fewer bugs (almost certainly
due to how we now feel about writing tests). due to how we now feel about writing tests).
_____________ _____________
@ -1228,9 +1228,9 @@ commits in already released history, for example to change the commit
message or the author. And it can also be used instead of git "grafts" message or the author. And it can also be used instead of git "grafts"
to link a repository with another old repository. to link a repository with another old repository.
In fact it's this last feature that "sold" it to the git community, so In fact it's this last feature that "sold" it to the Git community, so
it is now in the "master" branch of git's git repository and it should it is now in the "master" branch of Git's Git repository and it should
be released in git 1.6.5 in October or November 2009. be released in Git 1.6.5 in October or November 2009.
One problem with "git replace" is that currently it stores all the One problem with "git replace" is that currently it stores all the
replacements refs in "refs/replace/", but it would be perhaps better replacements refs in "refs/replace/", but it would be perhaps better
@ -1324,7 +1324,7 @@ Acknowledgements
---------------- ----------------
Many thanks to Junio Hamano for his help in reviewing this paper, for Many thanks to Junio Hamano for his help in reviewing this paper, for
reviewing the patches I sent to the git mailing list, for discussing reviewing the patches I sent to the Git mailing list, for discussing
some ideas and helping me improve them, for improving "git bisect" a some ideas and helping me improve them, for improving "git bisect" a
lot and for his awesome work in maintaining and developing Git. lot and for his awesome work in maintaining and developing Git.
@ -1337,7 +1337,7 @@ Many thanks to Linus Torvalds for inventing, developing and
evangelizing "git bisect", Git and Linux. evangelizing "git bisect", Git and Linux.
Many thanks to the many other great people who helped one way or Many thanks to the many other great people who helped one way or
another when I worked on git, especially to Andreas Ericsson, Johannes another when I worked on Git, especially to Andreas Ericsson, Johannes
Schindelin, H. Peter Anvin, Daniel Barkalow, Bill Lear, John Hawley, Schindelin, H. Peter Anvin, Daniel Barkalow, Bill Lear, John Hawley,
Shawn O. Pierce, Jeff King, Sam Vilain, Jon Seymour. Shawn O. Pierce, Jeff King, Sam Vilain, Jon Seymour.

View File

@ -169,14 +169,14 @@ the revision as good or bad in the usual manner.
Bisect skip Bisect skip
~~~~~~~~~~~~ ~~~~~~~~~~~~
Instead of choosing by yourself a nearby commit, you can ask git Instead of choosing by yourself a nearby commit, you can ask Git
to do it for you by issuing the command: to do it for you by issuing the command:
------------ ------------
$ git bisect skip # Current version cannot be tested $ git bisect skip # Current version cannot be tested
------------ ------------
But git may eventually be unable to tell the first bad commit among But Git may eventually be unable to tell the first bad commit among
a bad commit and one or more skipped commits. a bad commit and one or more skipped commits.
You can even skip a range of commits, instead of just one commit, You can even skip a range of commits, instead of just one commit,

View File

@ -30,7 +30,7 @@ The report does not tell you anything about lines which have been deleted or
replaced; you need to use a tool such as 'git diff' or the "pickaxe" replaced; you need to use a tool such as 'git diff' or the "pickaxe"
interface briefly mentioned in the following paragraph. interface briefly mentioned in the following paragraph.
Apart from supporting file annotation, git also supports searching the Apart from supporting file annotation, Git also supports searching the
development history for when a code snippet occurred in a change. This makes it development history for when a code snippet occurred in a change. This makes it
possible to track when a code snippet was added to a file, moved or copied possible to track when a code snippet was added to a file, moved or copied
between files, and eventually deleted or replaced. It works by searching for between files, and eventually deleted or replaced. It works by searching for

View File

@ -45,7 +45,7 @@ Note that this will create the new branch, but it will not switch the
working tree to it; use "git checkout <newbranch>" to switch to the working tree to it; use "git checkout <newbranch>" to switch to the
new branch. new branch.
When a local branch is started off a remote-tracking branch, git sets up the When a local branch is started off a remote-tracking branch, Git sets up the
branch so that 'git pull' will appropriately merge from branch so that 'git pull' will appropriately merge from
the remote-tracking branch. This behavior may be changed via the global the remote-tracking branch. This behavior may be changed via the global
`branch.autosetupmerge` configuration flag. That setting can be `branch.autosetupmerge` configuration flag. That setting can be

View File

@ -19,7 +19,7 @@ DESCRIPTION
Some workflows require that one or more branches of development on one Some workflows require that one or more branches of development on one
machine be replicated on another machine, but the two machines cannot machine be replicated on another machine, but the two machines cannot
be directly connected, and therefore the interactive git protocols (git, be directly connected, and therefore the interactive Git protocols (git,
ssh, rsync, http) cannot be used. This command provides support for ssh, rsync, http) cannot be used. This command provides support for
'git fetch' and 'git pull' to operate by packaging objects and references 'git fetch' and 'git pull' to operate by packaging objects and references
in an archive at the originating machine, then importing those into in an archive at the originating machine, then importing those into

View File

@ -18,14 +18,14 @@ DESCRIPTION
Checks if a given 'refname' is acceptable, and exits with a non-zero Checks if a given 'refname' is acceptable, and exits with a non-zero
status if it is not. status if it is not.
A reference is used in git to specify branches and tags. A A reference is used in Git to specify branches and tags. A
branch head is stored in the `refs/heads` hierarchy, while branch head is stored in the `refs/heads` hierarchy, while
a tag is stored in the `refs/tags` hierarchy of the ref namespace a tag is stored in the `refs/tags` hierarchy of the ref namespace
(typically in `$GIT_DIR/refs/heads` and `$GIT_DIR/refs/tags` (typically in `$GIT_DIR/refs/heads` and `$GIT_DIR/refs/tags`
directories or, as entries in file `$GIT_DIR/packed-refs` directories or, as entries in file `$GIT_DIR/packed-refs`
if refs are packed by `git gc`). if refs are packed by `git gc`).
git imposes the following rules on how references are named: Git imposes the following rules on how references are named:
. They can include slash `/` for hierarchical (directory) . They can include slash `/` for hierarchical (directory)
grouping, but no slash-separated component can begin with a grouping, but no slash-separated component can begin with a

View File

@ -333,7 +333,7 @@ a---b---c---d branch 'master' (refers to commit 'd')
tag 'v2.0' (refers to commit 'b') tag 'v2.0' (refers to commit 'b')
------------ ------------
In fact, we can perform all the normal git operations. But, let's look In fact, we can perform all the normal Git operations. But, let's look
at what happens when we then checkout master: at what happens when we then checkout master:
------------ ------------
@ -350,7 +350,7 @@ a---b---c---d branch 'master' (refers to commit 'd')
It is important to realize that at this point nothing refers to commit It is important to realize that at this point nothing refers to commit
'f'. Eventually commit 'f' (and by extension commit 'e') will be deleted 'f'. Eventually commit 'f' (and by extension commit 'e') will be deleted
by the routine git garbage collection process, unless we create a reference by the routine Git garbage collection process, unless we create a reference
before that happens. If we have not yet moved away from commit 'f', before that happens. If we have not yet moved away from commit 'f',
any of these will create a reference to it: any of these will create a reference to it:

View File

@ -16,7 +16,7 @@ DESCRIPTION
Cleans the working tree by recursively removing files that are not Cleans the working tree by recursively removing files that are not
under version control, starting from the current directory. under version control, starting from the current directory.
Normally, only files unknown to git are removed, but if the '-x' Normally, only files unknown to Git are removed, but if the '-x'
option is specified, ignored files are also removed. This can, for option is specified, ignored files are also removed. This can, for
example, be useful to remove all build products. example, be useful to remove all build products.
@ -27,13 +27,13 @@ OPTIONS
------- -------
-d:: -d::
Remove untracked directories in addition to untracked files. Remove untracked directories in addition to untracked files.
If an untracked directory is managed by a different git If an untracked directory is managed by a different Git
repository, it is not removed by default. Use -f option twice repository, it is not removed by default. Use -f option twice
if you really want to remove such a directory. if you really want to remove such a directory.
-f:: -f::
--force:: --force::
If the git configuration variable clean.requireForce is not set If the Git configuration variable clean.requireForce is not set
to false, 'git clean' will refuse to run unless given -f or -n. to false, 'git clean' will refuse to run unless given -f or -n.
-n:: -n::
@ -60,7 +60,7 @@ OPTIONS
working directory to test a clean build. working directory to test a clean build.
-X:: -X::
Remove only files ignored by git. This may be useful to rebuild Remove only files ignored by Git. This may be useful to rebuild
everything from scratch, but keep manually created files. everything from scratch, but keep manually created files.
SEE ALSO SEE ALSO

View File

@ -43,7 +43,7 @@ OPTIONS
--local:: --local::
-l:: -l::
When the repository to clone from is on a local machine, When the repository to clone from is on a local machine,
this flag bypasses the normal "git aware" transport this flag bypasses the normal "Git aware" transport
mechanism and clones the repository by making a copy of mechanism and clones the repository by making a copy of
HEAD and everything under objects and refs directories. HEAD and everything under objects and refs directories.
The files under `.git/objects/` directory are hardlinked The files under `.git/objects/` directory are hardlinked
@ -54,11 +54,11 @@ this is the default, and --local is essentially a no-op. If the
repository is specified as a URL, then this flag is ignored (and we repository is specified as a URL, then this flag is ignored (and we
never use the local optimizations). Specifying `--no-local` will never use the local optimizations). Specifying `--no-local` will
override the default when `/path/to/repo` is given, using the regular override the default when `/path/to/repo` is given, using the regular
git transport instead. Git transport instead.
+ +
To force copying instead of hardlinking (which may be desirable if you To force copying instead of hardlinking (which may be desirable if you
are trying to make a back-up of your repository), but still avoid the are trying to make a back-up of your repository), but still avoid the
usual "git aware" transport mechanism, `--no-hardlinks` can be used. usual "Git aware" transport mechanism, `--no-hardlinks` can be used.
--no-hardlinks:: --no-hardlinks::
Optimize the cloning process from a repository on a Optimize the cloning process from a repository on a
@ -76,9 +76,9 @@ usual "git aware" transport mechanism, `--no-hardlinks` can be used.
*NOTE*: this is a possibly dangerous operation; do *not* use *NOTE*: this is a possibly dangerous operation; do *not* use
it unless you understand what it does. If you clone your it unless you understand what it does. If you clone your
repository using this option and then delete branches (or use any repository using this option and then delete branches (or use any
other git command that makes any existing commit unreferenced) in the other Git command that makes any existing commit unreferenced) in the
source repository, some objects may become unreferenced (or dangling). source repository, some objects may become unreferenced (or dangling).
These objects may be removed by normal git operations (such as `git commit`) These objects may be removed by normal Git operations (such as `git commit`)
which automatically call `git gc --auto`. (See linkgit:git-gc[1].) which automatically call `git gc --auto`. (See linkgit:git-gc[1].)
If these objects are removed and were referenced by the cloned repository, If these objects are removed and were referenced by the cloned repository,
then the cloned repository will become corrupt. then the cloned repository will become corrupt.
@ -125,7 +125,7 @@ objects from the source repository into a pack in the cloned repository.
No checkout of HEAD is performed after the clone is complete. No checkout of HEAD is performed after the clone is complete.
--bare:: --bare::
Make a 'bare' GIT repository. That is, instead of Make a 'bare' Git repository. That is, instead of
creating `<directory>` and placing the administrative creating `<directory>` and placing the administrative
files in `<directory>/.git`, make the `<directory>` files in `<directory>/.git`, make the `<directory>`
itself the `$GIT_DIR`. This obviously implies the `-n` itself the `$GIT_DIR`. This obviously implies the `-n`
@ -213,8 +213,8 @@ objects from the source repository into a pack in the cloned repository.
--separate-git-dir=<git dir>:: --separate-git-dir=<git dir>::
Instead of placing the cloned repository where it is supposed Instead of placing the cloned repository where it is supposed
to be, place the cloned repository at the specified directory, to be, place the cloned repository at the specified directory,
then make a filesytem-agnostic git symbolic link to there. then make a filesytem-agnostic Git symbolic link to there.
The result is git repository can be separated from working The result is Git repository can be separated from working
tree. tree.

View File

@ -30,7 +30,7 @@ While a tree represents a particular directory state of a working
directory, a commit represents that state in "time", and explains how directory, a commit represents that state in "time", and explains how
to get there. to get there.
Normally a commit would identify a new "HEAD" state, and while git Normally a commit would identify a new "HEAD" state, and while Git
doesn't care where you save the note about that state, in practice we doesn't care where you save the note about that state, in practice we
tend to just write the result to the file that is pointed at by tend to just write the result to the file that is pointed at by
`.git/HEAD`, so that we can always see what the last committed `.git/HEAD`, so that we can always see what the last committed

View File

@ -32,7 +32,7 @@ The content to be added can be specified in several ways:
3. by listing files as arguments to the 'commit' command, in which 3. by listing files as arguments to the 'commit' command, in which
case the commit will ignore changes staged in the index, and instead case the commit will ignore changes staged in the index, and instead
record the current content of the listed files (which must already record the current content of the listed files (which must already
be known to git); be known to Git);
4. by using the -a switch with the 'commit' command to automatically 4. by using the -a switch with the 'commit' command to automatically
"add" changes from all known files (i.e. all files that are already "add" changes from all known files (i.e. all files that are already
@ -59,7 +59,7 @@ OPTIONS
--all:: --all::
Tell the command to automatically stage files that have Tell the command to automatically stage files that have
been modified and deleted, but new files you have not been modified and deleted, but new files you have not
told git about are not affected. told Git about are not affected.
-p:: -p::
--patch:: --patch::
@ -404,7 +404,7 @@ Though not required, it's a good idea to begin the commit message
with a single short (less than 50 character) line summarizing the with a single short (less than 50 character) line summarizing the
change, followed by a blank line and then a more thorough description. change, followed by a blank line and then a more thorough description.
The text up to the first blank line in a commit message is treated The text up to the first blank line in a commit message is treated
as the commit title, and that title is used throughout git. as the commit title, and that title is used throughout Git.
For example, linkgit:git-format-patch[1] turns a commit into email, and it uses For example, linkgit:git-format-patch[1] turns a commit into email, and it uses
the title on the Subject line and the rest of the commit in the body. the title on the Subject line and the rest of the commit in the body.

View File

@ -14,13 +14,13 @@ git config credential.helper 'cache [options]'
DESCRIPTION DESCRIPTION
----------- -----------
This command caches credentials in memory for use by future git This command caches credentials in memory for use by future Git
programs. The stored credentials never touch the disk, and are forgotten programs. The stored credentials never touch the disk, and are forgotten
after a configurable timeout. The cache is accessible over a Unix after a configurable timeout. The cache is accessible over a Unix
domain socket, restricted to the current user by filesystem permissions. domain socket, restricted to the current user by filesystem permissions.
You probably don't want to invoke this command directly; it is meant to You probably don't want to invoke this command directly; it is meant to
be used as a credential helper by other parts of git. See be used as a credential helper by other parts of Git. See
linkgit:gitcredentials[7] or `EXAMPLES` below. linkgit:gitcredentials[7] or `EXAMPLES` below.
OPTIONS OPTIONS

View File

@ -20,7 +20,7 @@ security tradeoff, try linkgit:git-credential-cache[1], or find a helper
that integrates with secure storage provided by your operating system. that integrates with secure storage provided by your operating system.
This command stores credentials indefinitely on disk for use by future This command stores credentials indefinitely on disk for use by future
git programs. Git programs.
You probably don't want to invoke this command directly; it is meant to You probably don't want to invoke this command directly; it is meant to
be used as a credential helper by other parts of git. See be used as a credential helper by other parts of git. See
@ -63,11 +63,11 @@ stored on its own line as a URL like:
https://user:pass@example.com https://user:pass@example.com
------------------------------ ------------------------------
When git needs authentication for a particular URL context, When Git needs authentication for a particular URL context,
credential-store will consider that context a pattern to match against credential-store will consider that context a pattern to match against
each entry in the credentials file. If the protocol, hostname, and each entry in the credentials file. If the protocol, hostname, and
username (if we already have one) match, then the password is returned username (if we already have one) match, then the password is returned
to git. See the discussion of configuration in linkgit:gitcredentials[7] to Git. See the discussion of configuration in linkgit:gitcredentials[7]
for more information. for more information.
GIT GIT

View File

@ -18,9 +18,9 @@ Git has an internal interface for storing and retrieving credentials
from system-specific helpers, as well as prompting the user for from system-specific helpers, as well as prompting the user for
usernames and passwords. The git-credential command exposes this usernames and passwords. The git-credential command exposes this
interface to scripts which may want to retrieve, store, or prompt for interface to scripts which may want to retrieve, store, or prompt for
credentials in the same manner as git. The design of this scriptable credentials in the same manner as Git. The design of this scriptable
interface models the internal C API; see interface models the internal C API; see
link:technical/api-credentials.txt[the git credential API] for more link:technical/api-credentials.txt[the Git credential API] for more
background on the concepts. background on the concepts.
git-credential takes an "action" option on the command-line (one of git-credential takes an "action" option on the command-line (one of
@ -74,7 +74,7 @@ infomation it has):
password=secr3t password=secr3t
+ +
In most cases, this means the attributes given in the input will be In most cases, this means the attributes given in the input will be
repeated in the output, but git may also modify the credential repeated in the output, but Git may also modify the credential
description, for example by removing the `path` attribute when the description, for example by removing the `path` attribute when the
protocol is HTTP(s) and `credential.useHttpPath` is false. protocol is HTTP(s) and `credential.useHttpPath` is false.
+ +

View File

@ -15,8 +15,8 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
Exports a commit from GIT to a CVS checkout, making it easier Exports a commit from Git to a CVS checkout, making it easier
to merge patches from a git repository into a CVS repository. to merge patches from a Git repository into a CVS repository.
Specify the name of a CVS checkout using the -w switch or execute it Specify the name of a CVS checkout using the -w switch or execute it
from the root of the CVS working copy. In the latter case GIT_DIR must from the root of the CVS working copy. In the latter case GIT_DIR must
@ -71,7 +71,7 @@ OPTIONS
-w:: -w::
Specify the location of the CVS checkout to use for the export. This Specify the location of the CVS checkout to use for the export. This
option does not require GIT_DIR to be set before execution if the option does not require GIT_DIR to be set before execution if the
current directory is within a git repository. The default is the current directory is within a Git repository. The default is the
value of 'cvsexportcommit.cvsdir'. value of 'cvsexportcommit.cvsdir'.
-W:: -W::

View File

@ -24,7 +24,7 @@ performing a one-shot import of a CVS repository consider using
link:http://cvs2svn.tigris.org/cvs2git.html[cvs2git] or link:http://cvs2svn.tigris.org/cvs2git.html[cvs2git] or
link:https://github.com/BartMassey/parsecvs[parsecvs]. link:https://github.com/BartMassey/parsecvs[parsecvs].
Imports a CVS repository into git. It will either create a new Imports a CVS repository into Git. It will either create a new
repository, or incrementally import into an existing one. repository, or incrementally import into an existing one.
Splitting the CVS log into patch sets is done by 'cvsps'. Splitting the CVS log into patch sets is done by 'cvsps'.
@ -65,18 +65,18 @@ OPTIONS
`CVS/Repository`. `CVS/Repository`.
-C <target-dir>:: -C <target-dir>::
The git repository to import to. If the directory doesn't The Git repository to import to. If the directory doesn't
exist, it will be created. Default is the current directory. exist, it will be created. Default is the current directory.
-r <remote>:: -r <remote>::
The git remote to import this CVS repository into. The Git remote to import this CVS repository into.
Moves all CVS branches into remotes/<remote>/<branch> Moves all CVS branches into remotes/<remote>/<branch>
akin to the way 'git clone' uses 'origin' by default. akin to the way 'git clone' uses 'origin' by default.
-o <branch-for-HEAD>:: -o <branch-for-HEAD>::
When no remote is specified (via -r) the 'HEAD' branch When no remote is specified (via -r) the 'HEAD' branch
from CVS is imported to the 'origin' branch within the git from CVS is imported to the 'origin' branch within the Git
repository, as 'HEAD' already has a special meaning for git. repository, as 'HEAD' already has a special meaning for Git.
When a remote is specified the 'HEAD' branch is named When a remote is specified the 'HEAD' branch is named
remotes/<remote>/master mirroring 'git clone' behaviour. remotes/<remote>/master mirroring 'git clone' behaviour.
Use this option if you want to import into a different Use this option if you want to import into a different

View File

@ -3,7 +3,7 @@ git-cvsserver(1)
NAME NAME
---- ----
git-cvsserver - A CVS server emulator for git git-cvsserver - A CVS server emulator for Git
SYNOPSIS SYNOPSIS
-------- --------
@ -60,7 +60,7 @@ unless '--export-all' was given, too.
DESCRIPTION DESCRIPTION
----------- -----------
This application is a CVS emulation layer for git. This application is a CVS emulation layer for Git.
It is highly functional. However, not all methods are implemented, It is highly functional. However, not all methods are implemented,
and for those methods that are implemented, and for those methods that are implemented,
@ -72,9 +72,9 @@ plugin. Most functionality works fine with both of these clients.
LIMITATIONS LIMITATIONS
----------- -----------
CVS clients cannot tag, branch or perform GIT merges. CVS clients cannot tag, branch or perform Git merges.
'git-cvsserver' maps GIT branches to CVS modules. This is very different 'git-cvsserver' maps Git branches to CVS modules. This is very different
from what most CVS users would expect since in CVS modules usually represent from what most CVS users would expect since in CVS modules usually represent
one or more directories. one or more directories.
@ -130,7 +130,7 @@ Then provide your password via the pserver method, for example:
------ ------
cvs -d:pserver:someuser:somepassword <at> server/path/repo.git co <HEAD_name> cvs -d:pserver:someuser:somepassword <at> server/path/repo.git co <HEAD_name>
------ ------
No special setup is needed for SSH access, other than having GIT tools No special setup is needed for SSH access, other than having Git tools
in the PATH. If you have clients that do not accept the CVS_SERVER in the PATH. If you have clients that do not accept the CVS_SERVER
environment variable, you can rename 'git-cvsserver' to `cvs`. environment variable, you can rename 'git-cvsserver' to `cvs`.
@ -160,9 +160,9 @@ with CVS_SERVER (and shouldn't) as 'git-shell' understands `cvs` to mean
Note: you need to ensure each user that is going to invoke 'git-cvsserver' has Note: you need to ensure each user that is going to invoke 'git-cvsserver' has
write access to the log file and to the database (see write access to the log file and to the database (see
<<dbbackend,Database Backend>>. If you want to offer write access over <<dbbackend,Database Backend>>. If you want to offer write access over
SSH, the users of course also need write access to the git repository itself. SSH, the users of course also need write access to the Git repository itself.
You also need to ensure that each repository is "bare" (without a git index You also need to ensure that each repository is "bare" (without a Git index
file) for `cvs commit` to work. See linkgit:gitcvs-migration[7]. file) for `cvs commit` to work. See linkgit:gitcvs-migration[7].
[[configaccessmethod]] [[configaccessmethod]]
@ -181,7 +181,7 @@ allowing access over SSH.
3. If you didn't specify the CVSROOT/CVS_SERVER directly in the checkout command, 3. If you didn't specify the CVSROOT/CVS_SERVER directly in the checkout command,
automatically saving it in your 'CVS/Root' files, then you need to set them automatically saving it in your 'CVS/Root' files, then you need to set them
explicitly in your environment. CVSROOT should be set as per normal, but the explicitly in your environment. CVSROOT should be set as per normal, but the
directory should point at the appropriate git repo. As above, for SSH clients directory should point at the appropriate Git repo. As above, for SSH clients
_not_ restricted to 'git-shell', CVS_SERVER should be set to 'git-cvsserver'. _not_ restricted to 'git-shell', CVS_SERVER should be set to 'git-cvsserver'.
+ +
-- --
@ -197,7 +197,7 @@ allowing access over SSH.
shell is bash, .bashrc may be a reasonable alternative. shell is bash, .bashrc may be a reasonable alternative.
5. Clients should now be able to check out the project. Use the CVS 'module' 5. Clients should now be able to check out the project. Use the CVS 'module'
name to indicate what GIT 'head' you want to check out. This also sets the name to indicate what Git 'head' you want to check out. This also sets the
name of your newly checked-out directory, unless you tell it otherwise with name of your newly checked-out directory, unless you tell it otherwise with
`-d <dir_name>`. For example, this checks out 'master' branch to the `-d <dir_name>`. For example, this checks out 'master' branch to the
`project-master` directory: `project-master` directory:
@ -210,7 +210,7 @@ allowing access over SSH.
Database Backend Database Backend
---------------- ----------------
'git-cvsserver' uses one database per git head (i.e. CVS module) to 'git-cvsserver' uses one database per Git head (i.e. CVS module) to
store information about the repository to maintain consistent store information about the repository to maintain consistent
CVS revision numbers. The database needs to be CVS revision numbers. The database needs to be
updated (i.e. written to) after every commit. updated (i.e. written to) after every commit.
@ -225,7 +225,7 @@ the pserver method), 'git-cvsserver' should have write access to
the database to work reliably (otherwise you need to make sure the database to work reliably (otherwise you need to make sure
that the database is up-to-date any time 'git-cvsserver' is executed). that the database is up-to-date any time 'git-cvsserver' is executed).
By default it uses SQLite databases in the git directory, named By default it uses SQLite databases in the Git directory, named
`gitcvs.<module_name>.sqlite`. Note that the SQLite backend creates `gitcvs.<module_name>.sqlite`. Note that the SQLite backend creates
temporary files in the same directory as the database file on temporary files in the same directory as the database file on
write so it might not be enough to grant the users using write so it might not be enough to grant the users using
@ -291,14 +291,14 @@ Variable substitution
In `dbdriver` and `dbuser` you can use the following variables: In `dbdriver` and `dbuser` you can use the following variables:
%G:: %G::
git directory name Git directory name
%g:: %g::
git directory name, where all characters except for Git directory name, where all characters except for
alpha-numeric ones, `.`, and `-` are replaced with alpha-numeric ones, `.`, and `-` are replaced with
`_` (this should make it easier to use the directory `_` (this should make it easier to use the directory
name in a filename if wanted) name in a filename if wanted)
%m:: %m::
CVS module/git head name CVS module/Git head name
%a:: %a::
access method (one of "ext" or "pserver") access method (one of "ext" or "pserver")
%u:: %u::

View File

@ -3,7 +3,7 @@ git-daemon(1)
NAME NAME
---- ----
git-daemon - A really simple server for git repositories git-daemon - A really simple server for Git repositories
SYNOPSIS SYNOPSIS
-------- --------
@ -22,12 +22,12 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
A really simple TCP git daemon that normally listens on port "DEFAULT_GIT_PORT" A really simple TCP Git daemon that normally listens on port "DEFAULT_GIT_PORT"
aka 9418. It waits for a connection asking for a service, and will serve aka 9418. It waits for a connection asking for a service, and will serve
that service if it is enabled. that service if it is enabled.
It verifies that the directory has the magic file "git-daemon-export-ok", and It verifies that the directory has the magic file "git-daemon-export-ok", and
it will refuse to export any git directory that hasn't explicitly been marked it will refuse to export any Git directory that hasn't explicitly been marked
for export this way (unless the '--export-all' parameter is specified). If you for export this way (unless the '--export-all' parameter is specified). If you
pass some directory paths as 'git daemon' arguments, you can further restrict pass some directory paths as 'git daemon' arguments, you can further restrict
the offers to a whitelist comprising of those. the offers to a whitelist comprising of those.
@ -37,7 +37,7 @@ By default, only `upload-pack` service is enabled, which serves
from 'git fetch', 'git pull', and 'git clone'. from 'git fetch', 'git pull', and 'git clone'.
This is ideally suited for read-only updates, i.e., pulling from This is ideally suited for read-only updates, i.e., pulling from
git repositories. Git repositories.
An `upload-archive` also exists to serve 'git archive'. An `upload-archive` also exists to serve 'git archive'.
@ -51,7 +51,7 @@ OPTIONS
--base-path=<path>:: --base-path=<path>::
Remap all the path requests as relative to the given path. Remap all the path requests as relative to the given path.
This is sort of "GIT root" - if you run 'git daemon' with This is sort of "Git root" - if you run 'git daemon' with
'--base-path=/srv/git' on example.com, then if you later try to pull '--base-path=/srv/git' on example.com, then if you later try to pull
'git://example.com/hello.git', 'git daemon' will interpret the path 'git://example.com/hello.git', 'git daemon' will interpret the path
as '/srv/git/hello.git'. as '/srv/git/hello.git'.
@ -73,7 +73,7 @@ OPTIONS
whitelist. whitelist.
--export-all:: --export-all::
Allow pulling from all directories that look like GIT repositories Allow pulling from all directories that look like Git repositories
(have the 'objects' and 'refs' subdirectories), even if they (have the 'objects' and 'refs' subdirectories), even if they
do not have the 'git-daemon-export-ok' file. do not have the 'git-daemon-export-ok' file.

View File

@ -131,7 +131,7 @@ closest tagname without any suffix:
Note that the suffix you get if you type these commands today may be Note that the suffix you get if you type these commands today may be
longer than what Linus saw above when he ran these commands, as your longer than what Linus saw above when he ran these commands, as your
git repository may have new commits whose object names begin with Git repository may have new commits whose object names begin with
975b that did not exist back then, and "-g975b" suffix alone may not 975b that did not exist back then, and "-g975b" suffix alone may not
be sufficient to disambiguate these commits. be sufficient to disambiguate these commits.

View File

@ -25,7 +25,7 @@ between two files on disk.
This form is to view the changes you made relative to This form is to view the changes you made relative to
the index (staging area for the next commit). In other the index (staging area for the next commit). In other
words, the differences are what you _could_ tell git to words, the differences are what you _could_ tell Git to
further add to the index but you still haven't. You can further add to the index but you still haven't. You can
stage these changes by using linkgit:git-add[1]. stage these changes by using linkgit:git-add[1].
+ +

View File

@ -12,7 +12,7 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
'git difftool' is a git command that allows you to compare and edit files 'git difftool' is a Git command that allows you to compare and edit files
between revisions using common diff tools. 'git difftool' is a frontend between revisions using common diff tools. 'git difftool' is a frontend
to 'git diff' and accepts the same options and arguments. See to 'git diff' and accepts the same options and arguments. See
linkgit:git-diff[1]. linkgit:git-diff[1].

View File

@ -80,7 +80,7 @@ Using --recurse-submodules can only fetch new commits in already checked
out submodules right now. When e.g. upstream added a new submodule in the out submodules right now. When e.g. upstream added a new submodule in the
just fetched commits of the superproject the submodule itself can not be just fetched commits of the superproject the submodule itself can not be
fetched, making it impossible to check out that submodule later without fetched, making it impossible to check out that submodule later without
having to do a fetch again. This is expected to be fixed in a future git having to do a fetch again. This is expected to be fixed in a future Git
version. version.
SEE ALSO SEE ALSO

View File

@ -18,7 +18,7 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
Lets you rewrite git revision history by rewriting the branches mentioned Lets you rewrite Git revision history by rewriting the branches mentioned
in the <rev-list options>, applying custom filters on each revision. in the <rev-list options>, applying custom filters on each revision.
Those filters can modify each tree (e.g. removing a file or running Those filters can modify each tree (e.g. removing a file or running
a perl rewrite on all files) or information about each commit. a perl rewrite on all files) or information about each commit.
@ -29,7 +29,7 @@ The command will only rewrite the _positive_ refs mentioned in the
command line (e.g. if you pass 'a..b', only 'b' will be rewritten). command line (e.g. if you pass 'a..b', only 'b' will be rewritten).
If you specify no filters, the commits will be recommitted without any If you specify no filters, the commits will be recommitted without any
changes, which would normally have no effect. Nevertheless, this may be changes, which would normally have no effect. Nevertheless, this may be
useful in the future for compensating for some git bugs or such, useful in the future for compensating for some Git bugs or such,
therefore such a usage is permitted. therefore such a usage is permitted.
*NOTE*: This command honors `.git/info/grafts` file and refs in *NOTE*: This command honors `.git/info/grafts` file and refs in
@ -374,7 +374,7 @@ git-filter-branch is often used to get rid of a subset of files,
usually with some combination of `--index-filter` and usually with some combination of `--index-filter` and
`--subdirectory-filter`. People expect the resulting repository to `--subdirectory-filter`. People expect the resulting repository to
be smaller than the original, but you need a few more steps to be smaller than the original, but you need a few more steps to
actually make it smaller, because git tries hard not to lose your actually make it smaller, because Git tries hard not to lose your
objects until you tell it to. First make sure that: objects until you tell it to. First make sure that:
* You really removed all variants of a filename, if a blob was moved * You really removed all variants of a filename, if a blob was moved

View File

@ -208,14 +208,14 @@ The expected use case of this is to write supporting explanation for
the commit that does not belong to the commit log message proper, the commit that does not belong to the commit log message proper,
and include it with the patch submission. While one can simply write and include it with the patch submission. While one can simply write
these explanations after `format-patch` has run but before sending, these explanations after `format-patch` has run but before sending,
keeping them as git notes allows them to be maintained between versions keeping them as Git notes allows them to be maintained between versions
of the patch series (but see the discussion of the `notes.rewrite` of the patch series (but see the discussion of the `notes.rewrite`
configuration options in linkgit:git-notes[1] to use this workflow). configuration options in linkgit:git-notes[1] to use this workflow).
--[no]-signature=<signature>:: --[no]-signature=<signature>::
Add a signature to each message produced. Per RFC 3676 the signature Add a signature to each message produced. Per RFC 3676 the signature
is separated from the body by a line with '-- ' on it. If the is separated from the body by a line with '-- ' on it. If the
signature option is omitted the signature defaults to the git version signature option is omitted the signature defaults to the Git version
number. number.
--suffix=.<sfx>:: --suffix=.<sfx>::
@ -389,7 +389,7 @@ Thunderbird
~~~~~~~~~~~ ~~~~~~~~~~~
By default, Thunderbird will both wrap emails as well as flag By default, Thunderbird will both wrap emails as well as flag
them as being 'format=flowed', both of which will make the them as being 'format=flowed', both of which will make the
resulting email unusable by git. resulting email unusable by Git.
There are three different approaches: use an add-on to turn off line wraps, There are three different approaches: use an add-on to turn off line wraps,
configure Thunderbird to not mangle patches, or use configure Thunderbird to not mangle patches, or use
@ -525,8 +525,8 @@ $ git format-patch -M -B origin
Additionally, it detects and handles renames and complete rewrites Additionally, it detects and handles renames and complete rewrites
intelligently to produce a renaming patch. A renaming patch reduces intelligently to produce a renaming patch. A renaming patch reduces
the amount of text output, and generally makes it easier to review. the amount of text output, and generally makes it easier to review.
Note that non-git "patch" programs won't understand renaming patches, so Note that non-Git "patch" programs won't understand renaming patches, so
use it only when you know the recipient uses git to apply your patch. use it only when you know the recipient uses Git to apply your patch.
* Extract three topmost commits from the current branch and format them * Extract three topmost commits from the current branch and format them
as e-mailable patches: as e-mailable patches:

View File

@ -56,7 +56,7 @@ index file, all SHA1 references in `refs` namespace, and all reflogs
($GIT_DIR/objects), but also the ones found in alternate ($GIT_DIR/objects), but also the ones found in alternate
object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES
or $GIT_DIR/objects/info/alternates, or $GIT_DIR/objects/info/alternates,
and in packed git archives found in $GIT_DIR/objects/pack and in packed Git archives found in $GIT_DIR/objects/pack
and corresponding pack subdirectories in alternate and corresponding pack subdirectories in alternate
object pools. This is now default; you can turn it off object pools. This is now default; you can turn it off
with --no-full. with --no-full.
@ -64,8 +64,8 @@ index file, all SHA1 references in `refs` namespace, and all reflogs
--strict:: --strict::
Enable more strict checking, namely to catch a file mode Enable more strict checking, namely to catch a file mode
recorded with g+w bit set, which was created by older recorded with g+w bit set, which was created by older
versions of git. Existing repositories, including the versions of Git. Existing repositories, including the
Linux kernel, git itself, and sparse repository have old Linux kernel, Git itself, and sparse repository have old
objects that triggers this check, but it is recommended objects that triggers this check, but it is recommended
to check new projects with this flag. to check new projects with this flag.

View File

@ -61,7 +61,7 @@ OPTIONS
blobs registered in the index file. blobs registered in the index file.
--no-index:: --no-index::
Search files in the current directory that is not managed by git. Search files in the current directory that is not managed by Git.
--untracked:: --untracked::
In addition to searching in the tracked files in the working In addition to searching in the tracked files in the working

View File

@ -102,7 +102,7 @@ Examples
SEE ALSO SEE ALSO
-------- --------
linkgit:gitk[1]:: linkgit:gitk[1]::
The git repository browser. Shows branches, commit history The Git repository browser. Shows branches, commit history
and file differences. gitk is the utility started by and file differences. gitk is the utility started by
'git gui''s Repository Visualize actions. 'git gui''s Repository Visualize actions.

View File

@ -40,7 +40,7 @@ OPTIONS
--path:: --path::
Hash object as it were located at the given path. The location of Hash object as it were located at the given path. The location of
file does not directly influence on the hash value, but path is file does not directly influence on the hash value, but path is
used to determine what git filters should be applied to the object used to determine what Git filters should be applied to the object
before it can be placed to the object database, and, as result of before it can be placed to the object database, and, as result of
applying filters, the actual blob put into the object database may applying filters, the actual blob put into the object database may
differ from the given file. This option is mainly useful for hashing differ from the given file. This option is mainly useful for hashing

View File

@ -3,7 +3,7 @@ git-help(1)
NAME NAME
---- ----
git-help - display help information about git git-help - Display help information about Git
SYNOPSIS SYNOPSIS
-------- --------
@ -14,13 +14,13 @@ DESCRIPTION
----------- -----------
With no options and no COMMAND given, the synopsis of the 'git' With no options and no COMMAND given, the synopsis of the 'git'
command and a list of the most commonly used git commands are printed command and a list of the most commonly used Git commands are printed
on the standard output. on the standard output.
If the option '--all' or '-a' is given, then all available commands are If the option '--all' or '-a' is given, then all available commands are
printed on the standard output. printed on the standard output.
If a git command is named, a manual page for that command is brought If a Git subcommand is named, a manual page for that subcommand is brought
up. The 'man' program is used by default for this purpose, but this up. The 'man' program is used by default for this purpose, but this
can be overridden by other options or configuration variables. can be overridden by other options or configuration variables.

View File

@ -19,7 +19,7 @@ and the backwards-compatible dumb HTTP protocol, as well as clients
pushing using the smart HTTP protocol. pushing using the smart HTTP protocol.
It verifies that the directory has the magic file It verifies that the directory has the magic file
"git-daemon-export-ok", and it will refuse to export any git directory "git-daemon-export-ok", and it will refuse to export any Git directory
that hasn't explicitly been marked for export this way (unless the that hasn't explicitly been marked for export this way (unless the
GIT_HTTP_EXPORT_ALL environmental variable is set). GIT_HTTP_EXPORT_ALL environmental variable is set).

View File

@ -3,7 +3,7 @@ git-http-fetch(1)
NAME NAME
---- ----
git-http-fetch - Download from a remote git repository via HTTP git-http-fetch - Download from a remote Git repository via HTTP
SYNOPSIS SYNOPSIS
@ -13,7 +13,7 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
Downloads a remote git repository via HTTP. Downloads a remote Git repository via HTTP.
*NOTE*: use of this command without -a is deprecated. The -a *NOTE*: use of this command without -a is deprecated. The -a
behaviour will become the default in a future release. behaviour will become the default in a future release.

View File

@ -19,7 +19,7 @@ DESCRIPTION
Reads a packed archive (.pack) from the specified file, and Reads a packed archive (.pack) from the specified file, and
builds a pack index file (.idx) for it. The packed archive builds a pack index file (.idx) for it. The packed archive
together with the pack index can then be placed in the together with the pack index can then be placed in the
objects/pack/ directory of a git repository. objects/pack/ directory of a Git repository.
OPTIONS OPTIONS
@ -39,7 +39,7 @@ OPTIONS
When this flag is provided, the pack is read from stdin When this flag is provided, the pack is read from stdin
instead and a copy is then written to <pack-file>. If instead and a copy is then written to <pack-file>. If
<pack-file> is not specified, the pack is written to <pack-file> is not specified, the pack is written to
objects/pack/ directory of the current git repository with objects/pack/ directory of the current Git repository with
a default name determined from the pack content. If a default name determined from the pack content. If
<pack-file> is not specified consider using --keep to <pack-file> is not specified consider using --keep to
prevent a race condition between this process and prevent a race condition between this process and
@ -81,7 +81,7 @@ OPTIONS
This is meant to reduce packing time on multiprocessor This is meant to reduce packing time on multiprocessor
machines. The required amount of memory for the delta search machines. The required amount of memory for the delta search
window is however multiplied by the number of threads. window is however multiplied by the number of threads.
Specifying 0 will cause git to auto-detect the number of CPU's Specifying 0 will cause Git to auto-detect the number of CPU's
and use maximum 3 threads. and use maximum 3 threads.

View File

@ -3,7 +3,7 @@ git-init-db(1)
NAME NAME
---- ----
git-init-db - Creates an empty git repository git-init-db - Creates an empty Git repository
SYNOPSIS SYNOPSIS

View File

@ -3,7 +3,7 @@ git-init(1)
NAME NAME
---- ----
git-init - Create an empty git repository or reinitialize an existing one git-init - Create an empty Git repository or reinitialize an existing one
SYNOPSIS SYNOPSIS
@ -17,7 +17,7 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
This command creates an empty git repository - basically a `.git` This command creates an empty Git repository - basically a `.git`
directory with subdirectories for `objects`, `refs/heads`, directory with subdirectories for `objects`, `refs/heads`,
`refs/tags`, and template files. An initial `HEAD` file that `refs/tags`, and template files. An initial `HEAD` file that
references the HEAD of the master branch is also created. references the HEAD of the master branch is also created.
@ -58,19 +58,19 @@ DIRECTORY" section below.)
--separate-git-dir=<git dir>:: --separate-git-dir=<git dir>::
Instead of initializing the repository where it is supposed to be, Instead of initializing the repository where it is supposed to be,
place a filesytem-agnostic git symbolic link there, pointing to the place a filesytem-agnostic Git symbolic link there, pointing to the
specified git path, and initialize a git repository at the path. The specified path, and initialize a Git repository at the path. The
result is git repository can be separated from working tree. If this result is Git repository can be separated from working tree. If this
is reinitialization, the repository will be moved to the specified is reinitialization, the repository will be moved to the specified
path. path.
--shared[=(false|true|umask|group|all|world|everybody|0xxx)]:: --shared[=(false|true|umask|group|all|world|everybody|0xxx)]::
Specify that the git repository is to be shared amongst several users. This Specify that the Git repository is to be shared amongst several users. This
allows users belonging to the same group to push into that allows users belonging to the same group to push into that
repository. When specified, the config variable "core.sharedRepository" is repository. When specified, the config variable "core.sharedRepository" is
set so that files and directories under `$GIT_DIR` are created with the set so that files and directories under `$GIT_DIR` are created with the
requested permissions. When not specified, git will use permissions reported requested permissions. When not specified, Git will use permissions reported
by umask(2). by umask(2).
The option can have the following values, defaulting to 'group' if no value The option can have the following values, defaulting to 'group' if no value
@ -130,7 +130,7 @@ The suggested patterns and hook files are all modifiable and extensible.
EXAMPLES EXAMPLES
-------- --------
Start a new git repository for an existing code base:: Start a new Git repository for an existing code base::
+ +
---------------- ----------------
$ cd /path/to/my/codebase $ cd /path/to/my/codebase

View File

@ -64,7 +64,7 @@ produced by --stat etc.
--log-size:: --log-size::
Before the log message print out its size in bytes. Intended Before the log message print out its size in bytes. Intended
mainly for porcelain tools consumption. If git is unable to mainly for porcelain tools consumption. If Git is unable to
produce a valid value size is set to zero. produce a valid value size is set to zero.
Note that only message is considered, if also a diff is shown Note that only message is considered, if also a diff is shown
its size is not included. its size is not included.

View File

@ -92,7 +92,7 @@ OPTIONS
directory and its subdirectories in <file>. directory and its subdirectories in <file>.
--exclude-standard:: --exclude-standard::
Add the standard git exclusions: .git/info/exclude, .gitignore Add the standard Git exclusions: .git/info/exclude, .gitignore
in each directory, and the user's global exclusion file. in each directory, and the user's global exclusion file.
--error-unmatch:: --error-unmatch::

View File

@ -41,13 +41,13 @@ If 'git merge-index' is called with multiple <file>s (or -a) then it
processes them in turn only stopping if merge returns a non-zero exit processes them in turn only stopping if merge returns a non-zero exit
code. code.
Typically this is run with a script calling git's imitation of Typically this is run with a script calling Git's imitation of
the 'merge' command from the RCS package. the 'merge' command from the RCS package.
A sample script called 'git merge-one-file' is included in the A sample script called 'git merge-one-file' is included in the
distribution. distribution.
ALERT ALERT ALERT! The git "merge object order" is different from the ALERT ALERT ALERT! The Git "merge object order" is different from the
RCS 'merge' program merge object order. In the above ordering, the RCS 'merge' program merge object order. In the above ordering, the
original is first. But the argument order to the 3-way merge program original is first. But the argument order to the 3-way merge program
'merge' is to have the original in the middle. Don't ask me why. 'merge' is to have the original in the middle. Don't ask me why.

View File

@ -178,10 +178,10 @@ of the merge. Among the changes made to the common ancestor's version,
non-overlapping ones (that is, you changed an area of the file while the non-overlapping ones (that is, you changed an area of the file while the
other side left that area intact, or vice versa) are incorporated in the other side left that area intact, or vice versa) are incorporated in the
final result verbatim. When both sides made changes to the same area, final result verbatim. When both sides made changes to the same area,
however, git cannot randomly pick one side over the other, and asks you to however, Git cannot randomly pick one side over the other, and asks you to
resolve it by leaving what both sides did to that area. resolve it by leaving what both sides did to that area.
By default, git uses the same style as the one used by the "merge" program By default, Git uses the same style as the one used by the "merge" program
from the RCS suite to present such a conflicted hunk, like this: from the RCS suite to present such a conflicted hunk, like this:
------------ ------------

View File

@ -3,7 +3,7 @@ git-mergetool{litdd}lib(1)
NAME NAME
---- ----
git-mergetool--lib - Common git merge tool shell scriptlets git-mergetool--lib - Common Git merge tool shell scriptlets
SYNOPSIS SYNOPSIS
-------- --------
@ -19,7 +19,7 @@ Porcelain-ish scripts and/or are writing new ones.
The 'git-mergetool{litdd}lib' scriptlet is designed to be sourced (using The 'git-mergetool{litdd}lib' scriptlet is designed to be sourced (using
`.`) by other shell scripts to set up functions for working `.`) by other shell scripts to set up functions for working
with git merge tools. with Git merge tools.
Before sourcing 'git-mergetool{litdd}lib', your script must set `TOOL_MODE` Before sourcing 'git-mergetool{litdd}lib', your script must set `TOOL_MODE`
to define the operation mode for the functions listed below. to define the operation mode for the functions listed below.

View File

@ -28,9 +28,9 @@ A tag signature file has a very simple fixed format: four lines of
tagger <tagger> tagger <tagger>
followed by some 'optional' free-form message (some tags created followed by some 'optional' free-form message (some tags created
by older git may not have `tagger` line). The message, when by older Git may not have `tagger` line). The message, when
exists, is separated by a blank line from the header. The exists, is separated by a blank line from the header. The
message part may contain a signature that git itself doesn't message part may contain a signature that Git itself doesn't
care about, but that can be verified with gpg. care about, but that can be verified with gpg.
GIT GIT

View File

@ -34,7 +34,7 @@ OPTIONS
-k:: -k::
Skip move or rename actions which would lead to an error Skip move or rename actions which would lead to an error
condition. An error happens when a source is neither existing nor condition. An error happens when a source is neither existing nor
controlled by GIT, or when it would overwrite an existing controlled by Git, or when it would overwrite an existing
file unless '-f' is given. file unless '-f' is given.
-n:: -n::
--dry-run:: --dry-run::

View File

@ -18,13 +18,13 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
This command provides a way to interact with p4 repositories This command provides a way to interact with p4 repositories
using git. using Git.
Create a new git repository from an existing p4 repository using Create a new Git repository from an existing p4 repository using
'git p4 clone', giving it one or more p4 depot paths. Incorporate 'git p4 clone', giving it one or more p4 depot paths. Incorporate
new commits from p4 changes with 'git p4 sync'. The 'sync' command new commits from p4 changes with 'git p4 sync'. The 'sync' command
is also used to include new branches from other p4 depot paths. is also used to include new branches from other p4 depot paths.
Submit git changes back to p4 using 'git p4 submit'. The command Submit Git changes back to p4 using 'git p4 submit'. The command
'git p4 rebase' does a sync plus rebases the current branch onto 'git p4 rebase' does a sync plus rebases the current branch onto
the updated p4 remote branch. the updated p4 remote branch.
@ -37,7 +37,7 @@ EXAMPLE
$ git p4 clone //depot/path/project $ git p4 clone //depot/path/project
------------ ------------
* Do some work in the newly created git repository: * Do some work in the newly created Git repository:
+ +
------------ ------------
$ cd project $ cd project
@ -45,7 +45,7 @@ $ vi foo.h
$ git commit -a -m "edited foo.h" $ git commit -a -m "edited foo.h"
------------ ------------
* Update the git repository with recent changes from p4, rebasing your * Update the Git repository with recent changes from p4, rebasing your
work on top: work on top:
+ +
------------ ------------
@ -64,21 +64,21 @@ COMMANDS
Clone Clone
~~~~~ ~~~~~
Generally, 'git p4 clone' is used to create a new git directory Generally, 'git p4 clone' is used to create a new Git directory
from an existing p4 repository: from an existing p4 repository:
------------ ------------
$ git p4 clone //depot/path/project $ git p4 clone //depot/path/project
------------ ------------
This: This:
1. Creates an empty git repository in a subdirectory called 'project'. 1. Creates an empty Git repository in a subdirectory called 'project'.
+ +
2. Imports the full contents of the head revision from the given p4 2. Imports the full contents of the head revision from the given p4
depot path into a single commit in the git branch 'refs/remotes/p4/master'. depot path into a single commit in the Git branch 'refs/remotes/p4/master'.
+ +
3. Creates a local branch, 'master' from this remote and checks it out. 3. Creates a local branch, 'master' from this remote and checks it out.
To reproduce the entire p4 history in git, use the '@all' modifier on To reproduce the entire p4 history in Git, use the '@all' modifier on
the depot path: the depot path:
------------ ------------
$ git p4 clone //depot/path/project@all $ git p4 clone //depot/path/project@all
@ -88,13 +88,13 @@ $ git p4 clone //depot/path/project@all
Sync Sync
~~~~ ~~~~
As development continues in the p4 repository, those changes can As development continues in the p4 repository, those changes can
be included in the git repository using: be included in the Git repository using:
------------ ------------
$ git p4 sync $ git p4 sync
------------ ------------
This command finds new changes in p4 and imports them as git commits. This command finds new changes in p4 and imports them as Git commits.
P4 repositories can be added to an existing git repository using P4 repositories can be added to an existing Git repository using
'git p4 sync' too: 'git p4 sync' too:
------------ ------------
$ mkdir repo-git $ mkdir repo-git
@ -103,14 +103,14 @@ $ git init
$ git p4 sync //path/in/your/perforce/depot $ git p4 sync //path/in/your/perforce/depot
------------ ------------
This imports the specified depot into This imports the specified depot into
'refs/remotes/p4/master' in an existing git repository. The 'refs/remotes/p4/master' in an existing Git repository. The
'--branch' option can be used to specify a different branch to '--branch' option can be used to specify a different branch to
be used for the p4 content. be used for the p4 content.
If a git repository includes branches 'refs/remotes/origin/p4', these If a Git repository includes branches 'refs/remotes/origin/p4', these
will be fetched and consulted first during a 'git p4 sync'. Since will be fetched and consulted first during a 'git p4 sync'. Since
importing directly from p4 is considerably slower than pulling changes importing directly from p4 is considerably slower than pulling changes
from a git remote, this can be useful in a multi-developer environment. from a Git remote, this can be useful in a multi-developer environment.
If there are multiple branches, doing 'git p4 sync' will automatically If there are multiple branches, doing 'git p4 sync' will automatically
use the "BRANCH DETECTION" algorithm to try to partition new changes use the "BRANCH DETECTION" algorithm to try to partition new changes
@ -132,13 +132,13 @@ $ git p4 rebase
Submit Submit
~~~~~~ ~~~~~~
Submitting changes from a git repository back to the p4 repository Submitting changes from a Git repository back to the p4 repository
requires a separate p4 client workspace. This should be specified requires a separate p4 client workspace. This should be specified
using the 'P4CLIENT' environment variable or the git configuration using the 'P4CLIENT' environment variable or the Git configuration
variable 'git-p4.client'. The p4 client must exist, but the client root variable 'git-p4.client'. The p4 client must exist, but the client root
will be created and populated if it does not already exist. will be created and populated if it does not already exist.
To submit all changes that are in the current git branch but not in To submit all changes that are in the current Git branch but not in
the 'p4/master' branch, use: the 'p4/master' branch, use:
------------ ------------
$ git p4 submit $ git p4 submit
@ -154,7 +154,7 @@ be overridden using the '--origin=' command-line option.
The p4 changes will be created as the user invoking 'git p4 submit'. The The p4 changes will be created as the user invoking 'git p4 submit'. The
'--preserve-user' option will cause ownership to be modified '--preserve-user' option will cause ownership to be modified
according to the author of the git commit. This option requires admin according to the author of the Git commit. This option requires admin
privileges in p4, which can be granted using 'p4 protect'. privileges in p4, which can be granted using 'p4 protect'.
@ -185,7 +185,7 @@ subsequent 'sync' operations.
branch is 'master'. branch is 'master'.
+ +
This example imports a new remote "p4/proj2" into an existing This example imports a new remote "p4/proj2" into an existing
git repository: Git repository:
+ +
---- ----
$ git init $ git init
@ -206,11 +206,11 @@ git repository:
--detect-labels:: --detect-labels::
Query p4 for labels associated with the depot paths, and add Query p4 for labels associated with the depot paths, and add
them as tags in git. Limited usefulness as only imports labels them as tags in Git. Limited usefulness as only imports labels
associated with new changelists. Deprecated. associated with new changelists. Deprecated.
--import-labels:: --import-labels::
Import labels from p4 into git. Import labels from p4 into Git.
--import-local:: --import-local::
By default, p4 branches are stored in 'refs/remotes/p4/', By default, p4 branches are stored in 'refs/remotes/p4/',
@ -226,12 +226,12 @@ git repository:
specifier. specifier.
--keep-path:: --keep-path::
The mapping of file names from the p4 depot path to git, by The mapping of file names from the p4 depot path to Git, by
default, involves removing the entire depot path. With this default, involves removing the entire depot path. With this
option, the full p4 depot path is retained in git. For example, option, the full p4 depot path is retained in Git. For example,
path '//depot/main/foo/bar.c', when imported from path '//depot/main/foo/bar.c', when imported from
'//depot/main/', becomes 'foo/bar.c'. With '--keep-path', the '//depot/main/', becomes 'foo/bar.c'. With '--keep-path', the
git path is instead 'depot/main/foo/bar.c'. Git path is instead 'depot/main/foo/bar.c'.
--use-client-spec:: --use-client-spec::
Use a client spec to find the list of interesting files in p4. Use a client spec to find the list of interesting files in p4.
@ -243,7 +243,7 @@ These options can be used in an initial 'clone', along with the 'sync'
options described above. options described above.
--destination <directory>:: --destination <directory>::
Where to create the git repository. If not provided, the last Where to create the Git repository. If not provided, the last
component in the p4 depot path is used to create a new component in the p4 depot path is used to create a new
directory. directory.
@ -273,12 +273,12 @@ These options can be used to modify 'git p4 submit' behavior.
requires p4 admin privileges. requires p4 admin privileges.
--export-labels:: --export-labels::
Export tags from git as p4 labels. Tags found in git are applied Export tags from Git as p4 labels. Tags found in Git are applied
to the perforce working directory. to the perforce working directory.
--dry-run, -n:: --dry-run, -n::
Show just what commits would be submitted to p4; do not change Show just what commits would be submitted to p4; do not change
state in git or p4. state in Git or p4.
--prepare-p4-only:: --prepare-p4-only::
Apply a commit to the p4 workspace, opening, adding and deleting Apply a commit to the p4 workspace, opening, adding and deleting
@ -324,12 +324,12 @@ p4 revision specifier on the end:
"//depot/proj1@all //depot/proj2@all":: "//depot/proj1@all //depot/proj2@all"::
Import all changes from both named depot paths into a single Import all changes from both named depot paths into a single
repository. Only files below these directories are included. repository. Only files below these directories are included.
There is not a subdirectory in git for each "proj1" and "proj2". There is not a subdirectory in Git for each "proj1" and "proj2".
You must use the '--destination' option when specifying more You must use the '--destination' option when specifying more
than one depot path. The revision specifier must be specified than one depot path. The revision specifier must be specified
identically on each depot path. If there are files in the identically on each depot path. If there are files in the
depot paths with the same name, the path with the most recently depot paths with the same name, the path with the most recently
updated version of the file is the one that appears in git. updated version of the file is the one that appears in Git.
See 'p4 help revisions' for the full syntax of p4 revision specifiers. See 'p4 help revisions' for the full syntax of p4 revision specifiers.
@ -346,11 +346,11 @@ configuration file. This allows future 'git p4 submit' commands to
work properly; the submit command looks only at the variable and does work properly; the submit command looks only at the variable and does
not have a command-line option. not have a command-line option.
The full syntax for a p4 view is documented in 'p4 help views'. 'Git p4' The full syntax for a p4 view is documented in 'p4 help views'. 'git p4'
knows only a subset of the view syntax. It understands multi-line knows only a subset of the view syntax. It understands multi-line
mappings, overlays with '+', exclusions with '-' and double-quotes mappings, overlays with '+', exclusions with '-' and double-quotes
around whitespace. Of the possible wildcards, 'git p4' only handles around whitespace. Of the possible wildcards, 'git p4' only handles
'...', and only when it is at the end of the path. 'Git p4' will complain '...', and only when it is at the end of the path. 'git p4' will complain
if it encounters an unhandled wildcard. if it encounters an unhandled wildcard.
Bugs in the implementation of overlap mappings exist. If multiple depot Bugs in the implementation of overlap mappings exist. If multiple depot
@ -366,7 +366,7 @@ variable P4CLIENT, a file referenced by P4CONFIG, or the local host name.
BRANCH DETECTION BRANCH DETECTION
---------------- ----------------
P4 does not have the same concept of a branch as git. Instead, P4 does not have the same concept of a branch as Git. Instead,
p4 organizes its content as a directory tree, where by convention p4 organizes its content as a directory tree, where by convention
different logical branches are in different locations in the tree. different logical branches are in different locations in the tree.
The 'p4 branch' command is used to maintain mappings between The 'p4 branch' command is used to maintain mappings between
@ -376,7 +376,7 @@ can use these mappings to determine branch relationships.
If you have a repository where all the branches of interest exist as If you have a repository where all the branches of interest exist as
subdirectories of a single depot path, you can use '--detect-branches' subdirectories of a single depot path, you can use '--detect-branches'
when cloning or syncing to have 'git p4' automatically find when cloning or syncing to have 'git p4' automatically find
subdirectories in p4, and to generate these as branches in git. subdirectories in p4, and to generate these as branches in Git.
For example, if the P4 repository structure is: For example, if the P4 repository structure is:
---- ----
@ -398,7 +398,7 @@ called 'master', and one for //depot/branch1 called 'depot/branch1'.
However, it is not necessary to create branches in p4 to be able to use However, it is not necessary to create branches in p4 to be able to use
them like branches. Because it is difficult to infer branch them like branches. Because it is difficult to infer branch
relationships automatically, a git configuration setting relationships automatically, a Git configuration setting
'git-p4.branchList' can be used to explicitly identify branch 'git-p4.branchList' can be used to explicitly identify branch
relationships. It is a list of "source:destination" pairs, like a relationships. It is a list of "source:destination" pairs, like a
simple p4 branch specification, where the "source" and "destination" are simple p4 branch specification, where the "source" and "destination" are
@ -416,7 +416,7 @@ git p4 clone --detect-branches //depot@all .
PERFORMANCE PERFORMANCE
----------- -----------
The fast-import mechanism used by 'git p4' creates one pack file for The fast-import mechanism used by 'git p4' creates one pack file for
each invocation of 'git p4 sync'. Normally, git garbage compression each invocation of 'git p4 sync'. Normally, Git garbage compression
(linkgit:git-gc[1]) automatically compresses these to fewer pack files, (linkgit:git-gc[1]) automatically compresses these to fewer pack files,
but explicit invocation of 'git repack -adf' may improve performance. but explicit invocation of 'git repack -adf' may improve performance.
@ -454,9 +454,9 @@ git-p4.client::
Clone and sync variables Clone and sync variables
~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~
git-p4.syncFromOrigin:: git-p4.syncFromOrigin::
Because importing commits from other git repositories is much faster Because importing commits from other Git repositories is much faster
than importing them from p4, a mechanism exists to find p4 changes than importing them from p4, a mechanism exists to find p4 changes
first in git remotes. If branches exist under 'refs/remote/origin/p4', first in Git remotes. If branches exist under 'refs/remote/origin/p4',
those will be fetched and used when syncing from p4. This those will be fetched and used when syncing from p4. This
variable can be set to 'false' to disable this behavior. variable can be set to 'false' to disable this behavior.
@ -508,7 +508,7 @@ git-p4.detectCopiesHarder::
Detect copies harder. See linkgit:git-diff[1]. A boolean. Detect copies harder. See linkgit:git-diff[1]. A boolean.
git-p4.preserveUser:: git-p4.preserveUser::
On submit, re-author changes to reflect the git author, On submit, re-author changes to reflect the Git author,
regardless of who invokes 'git p4 submit'. regardless of who invokes 'git p4 submit'.
git-p4.allowMissingP4Users:: git-p4.allowMissingP4Users::
@ -545,7 +545,7 @@ git-p4.attemptRCSCleanup::
present. present.
git-p4.exportLabels:: git-p4.exportLabels::
Export git tags to p4 labels, as per --export-labels. Export Git tags to p4 labels, as per --export-labels.
git-p4.labelExportRegexp:: git-p4.labelExportRegexp::
Only p4 labels matching this regular expression will be exported. The Only p4 labels matching this regular expression will be exported. The
@ -557,11 +557,11 @@ git-p4.conflict::
IMPLEMENTATION DETAILS IMPLEMENTATION DETAILS
---------------------- ----------------------
* Changesets from p4 are imported using git fast-import. * Changesets from p4 are imported using Git fast-import.
* Cloning or syncing does not require a p4 client; file contents are * Cloning or syncing does not require a p4 client; file contents are
collected using 'p4 print'. collected using 'p4 print'.
* Submitting requires a p4 client, which is not in the same location * Submitting requires a p4 client, which is not in the same location
as the git repository. Patches are applied, one at a time, to as the Git repository. Patches are applied, one at a time, to
this p4 client and submitted from there. this p4 client and submitted from there.
* Each commit imported by 'git p4' has a line at the end of the log * Each commit imported by 'git p4' has a line at the end of the log
message indicating the p4 depot location and change number. This message indicating the p4 depot location and change number. This

View File

@ -35,7 +35,7 @@ A pack index file (.idx) is generated for fast, random access to the
objects in the pack. Placing both the index file (.idx) and the packed objects in the pack. Placing both the index file (.idx) and the packed
archive (.pack) in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or archive (.pack) in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or
any of the directories on $GIT_ALTERNATE_OBJECT_DIRECTORIES) any of the directories on $GIT_ALTERNATE_OBJECT_DIRECTORIES)
enables git to read from the pack archive. enables Git to read from the pack archive.
The 'git unpack-objects' command can read the packed archive and The 'git unpack-objects' command can read the packed archive and
expand the objects contained in the pack into "one-file expand the objects contained in the pack into "one-file
@ -80,7 +80,7 @@ base-name::
--include-tag:: --include-tag::
Include unasked-for annotated tags if the object they Include unasked-for annotated tags if the object they
reference was included in the resulting packfile. This reference was included in the resulting packfile. This
can be useful to send new tags to native git clients. can be useful to send new tags to native Git clients.
--window=<n>:: --window=<n>::
--depth=<n>:: --depth=<n>::
@ -185,14 +185,14 @@ base-name::
option only makes sense in conjunction with --stdout. option only makes sense in conjunction with --stdout.
+ +
Note: A thin pack violates the packed archive format by omitting Note: A thin pack violates the packed archive format by omitting
required objects and is thus unusable by git without making it required objects and is thus unusable by Git without making it
self-contained. Use `git index-pack --fix-thin` self-contained. Use `git index-pack --fix-thin`
(see linkgit:git-index-pack[1]) to restore the self-contained property. (see linkgit:git-index-pack[1]) to restore the self-contained property.
--delta-base-offset:: --delta-base-offset::
A packed archive can express the base object of a delta as A packed archive can express the base object of a delta as
either a 20-byte object name or as an offset in the either a 20-byte object name or as an offset in the
stream, but ancient versions of git don't understand the stream, but ancient versions of Git don't understand the
latter. By default, 'git pack-objects' only uses the latter. By default, 'git pack-objects' only uses the
former format for better compatibility. This option former format for better compatibility. This option
allows the command to use the latter format for allows the command to use the latter format for
@ -202,7 +202,7 @@ self-contained. Use `git index-pack --fix-thin`
+ +
Note: Porcelain commands such as `git gc` (see linkgit:git-gc[1]), Note: Porcelain commands such as `git gc` (see linkgit:git-gc[1]),
`git repack` (see linkgit:git-repack[1]) pass this option by default `git repack` (see linkgit:git-repack[1]) pass this option by default
in modern git when they put objects in your repository into pack files. in modern Git when they put objects in your repository into pack files.
So does `git bundle` (see linkgit:git-bundle[1]) when it creates a bundle. So does `git bundle` (see linkgit:git-bundle[1]) when it creates a bundle.
--threads=<n>:: --threads=<n>::
@ -212,7 +212,7 @@ So does `git bundle` (see linkgit:git-bundle[1]) when it creates a bundle.
This is meant to reduce packing time on multiprocessor machines. This is meant to reduce packing time on multiprocessor machines.
The required amount of memory for the delta search window is The required amount of memory for the delta search window is
however multiplied by the number of threads. however multiplied by the number of threads.
Specifying 0 will cause git to auto-detect the number of CPU's Specifying 0 will cause Git to auto-detect the number of CPU's
and set the number of threads accordingly. and set the number of threads accordingly.
--index-version=<version>[,<offset>]:: --index-version=<version>[,<offset>]::

View File

@ -59,8 +59,8 @@ and a log message from the user describing the changes.
See linkgit:git-merge[1] for details, including how conflicts See linkgit:git-merge[1] for details, including how conflicts
are presented and handled. are presented and handled.
In git 1.7.0 or later, to cancel a conflicting merge, use In Git 1.7.0 or later, to cancel a conflicting merge, use
`git reset --merge`. *Warning*: In older versions of git, running 'git pull' `git reset --merge`. *Warning*: In older versions of Git, running 'git pull'
with uncommitted changes is discouraged: while possible, it leaves you with uncommitted changes is discouraged: while possible, it leaves you
in a state that may be hard to back out of in the case of a conflict. in a state that may be hard to back out of in the case of a conflict.
@ -89,7 +89,7 @@ must be given before the options meant for 'git fetch'.
This option controls if new commits of all populated submodules should This option controls if new commits of all populated submodules should
be fetched too (see linkgit:git-config[1] and linkgit:gitmodules[5]). be fetched too (see linkgit:git-config[1] and linkgit:gitmodules[5]).
That might be necessary to get the data needed for merging submodule That might be necessary to get the data needed for merging submodule
commits, a feature git learned in 1.7.3. Notice that the result of a commits, a feature Git learned in 1.7.3. Notice that the result of a
merge will not be checked out in the submodule, "git submodule update" merge will not be checked out in the submodule, "git submodule update"
has to be called afterwards to bring the work tree up to date with the has to be called afterwards to bring the work tree up to date with the
merge result. merge result.
@ -228,7 +228,7 @@ Using --recurse-submodules can only fetch new commits in already checked
out submodules right now. When e.g. upstream added a new submodule in the out submodules right now. When e.g. upstream added a new submodule in the
just fetched commits of the superproject the submodule itself can not be just fetched commits of the superproject the submodule itself can not be
fetched, making it impossible to check out that submodule later without fetched, making it impossible to check out that submodule later without
having to do a fetch again. This is expected to be fixed in a future git having to do a fetch again. This is expected to be fixed in a future Git
version. version.
SEE ALSO SEE ALSO

View File

@ -53,7 +53,7 @@ updated.
The object referenced by <src> is used to update the <dst> reference The object referenced by <src> is used to update the <dst> reference
on the remote side. By default this is only allowed if <dst> is not on the remote side. By default this is only allowed if <dst> is not
a tag (annotated or lightweight), and then only if it can fast-forward a tag (annotated or lightweight), and then only if it can fast-forward
<dst>. By having the optional leading `+`, you can tell git to update <dst>. By having the optional leading `+`, you can tell Git to update
the <dst> ref even if it is not allowed by default (e.g., it is not a the <dst> ref even if it is not allowed by default (e.g., it is not a
fast-forward.) This does *not* attempt to merge <src> into <dst>. See fast-forward.) This does *not* attempt to merge <src> into <dst>. See
EXAMPLES below for details. EXAMPLES below for details.
@ -64,7 +64,7 @@ Pushing an empty <src> allows you to delete the <dst> ref from
the remote repository. the remote repository.
+ +
The special refspec `:` (or `+:` to allow non-fast-forward updates) The special refspec `:` (or `+:` to allow non-fast-forward updates)
directs git to push "matching" branches: for every branch that exists on directs Git to push "matching" branches: for every branch that exists on
the local side, the remote side is updated if a branch of the same name the local side, the remote side is updated if a branch of the same name
already exists on the remote side. This is the default operation mode already exists on the remote side. This is the default operation mode
if no explicit refspec is found (that is neither on the command line if no explicit refspec is found (that is neither on the command line
@ -177,7 +177,7 @@ useful if you write an alias or script around 'git push'.
--recurse-submodules=check|on-demand:: --recurse-submodules=check|on-demand::
Make sure all submodule commits used by the revisions to be Make sure all submodule commits used by the revisions to be
pushed are available on a remote-tracking branch. If 'check' is pushed are available on a remote-tracking branch. If 'check' is
used git will verify that all submodule commits that changed in used Git will verify that all submodule commits that changed in
the revisions to be pushed are available on at least one remote the revisions to be pushed are available on at least one remote
of the submodule. If any commits are missing the push will be of the submodule. If any commits are missing the push will be
aborted and exit with non-zero status. If 'on-demand' is used aborted and exit with non-zero status. If 'on-demand' is used
@ -192,7 +192,7 @@ OUTPUT
------ ------
The output of "git push" depends on the transport method used; this The output of "git push" depends on the transport method used; this
section describes the output when pushing over the git protocol (either section describes the output when pushing over the Git protocol (either
locally or via ssh). locally or via ssh).
The status of the push is output in tabular form, with each line The status of the push is output in tabular form, with each line

View File

@ -14,7 +14,7 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
Applies a quilt patchset onto the current git branch, preserving Applies a quilt patchset onto the current Git branch, preserving
the patch boundaries, patch order, and patch descriptions present the patch boundaries, patch order, and patch descriptions present
in the quilt patchset. in the quilt patchset.
@ -25,7 +25,7 @@ the patch description is displayed and the user is asked to
interactively enter the author of the patch. interactively enter the author of the patch.
If a subject is not found in the patch description the patch name is If a subject is not found in the patch description the patch name is
preserved as the 1 line subject in the git description. preserved as the 1 line subject in the Git description.
OPTIONS OPTIONS
------- -------

View File

@ -179,7 +179,7 @@ parameter can be any valid commit-ish.
In case of conflict, 'git rebase' will stop at the first problematic commit 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 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 the markers (<<<<<<) and make edits to resolve the conflict. For each
file you edit, you need to tell git that the conflict has been resolved, file you edit, you need to tell Git that the conflict has been resolved,
typically this would be done with typically this would be done with

View File

@ -38,7 +38,7 @@ The reflog will cover all recent actions (HEAD reflog records branch switching
as well). It is an alias for `git log -g --abbrev-commit --pretty=oneline`; as well). It is an alias for `git log -g --abbrev-commit --pretty=oneline`;
see linkgit:git-log[1]. see linkgit:git-log[1].
The reflog is useful in various git commands, to specify the old value The reflog is useful in various Git commands, to specify the old value
of a reference. For example, `HEAD@{2}` means "where HEAD used to be of a reference. For example, `HEAD@{2}` means "where HEAD used to be
two moves ago", `master@{one.week.ago}` means "where master used to two moves ago", `master@{one.week.ago}` means "where master used to
point to one week ago", and so on. See linkgit:gitrevisions[7] for point to one week ago", and so on. See linkgit:gitrevisions[7] for

View File

@ -13,7 +13,7 @@ git remote add <nick> "ext::<command>[ <arguments>...]"
DESCRIPTION DESCRIPTION
----------- -----------
This remote helper uses the specified '<command>' to connect This remote helper uses the specified '<command>' to connect
to a remote git server. to a remote Git server.
Data written to stdin of the specified '<command>' is assumed Data written to stdin of the specified '<command>' is assumed
to be sent to a git:// server, git-upload-pack, git-receive-pack to be sent to a git:// server, git-upload-pack, git-receive-pack
@ -33,12 +33,12 @@ The following sequences have a special meaning:
'%s':: '%s'::
Replaced with name (receive-pack, upload-pack, or Replaced with name (receive-pack, upload-pack, or
upload-archive) of the service git wants to invoke. upload-archive) of the service Git wants to invoke.
'%S':: '%S'::
Replaced with long name (git-receive-pack, Replaced with long name (git-receive-pack,
git-upload-pack, or git-upload-archive) of the service git-upload-pack, or git-upload-archive) of the service
git wants to invoke. Git wants to invoke.
'%G' (must be the first characters in an argument):: '%G' (must be the first characters in an argument)::
This argument will not be passed to '<command>'. Instead, it This argument will not be passed to '<command>'. Instead, it
@ -75,7 +75,7 @@ GIT_EXT_SERVICE_NOPREFIX::
EXAMPLES: EXAMPLES:
--------- ---------
This remote helper is transparently used by git when This remote helper is transparently used by Git when
you use commands such as "git fetch <URL>", "git clone <URL>", you use commands such as "git fetch <URL>", "git clone <URL>",
, "git push <URL>" or "git remote add <nick> <URL>", where <URL> , "git push <URL>" or "git remote add <nick> <URL>", where <URL>
begins with `ext::`. Examples: begins with `ext::`. Examples:
@ -100,14 +100,14 @@ begins with `ext::`. Examples:
Represents a repository with path /repo accessed using the Represents a repository with path /repo accessed using the
helper program "git-server-alias foo". The hostname for the helper program "git-server-alias foo". The hostname for the
remote server passed in the protocol stream will be "foo" remote server passed in the protocol stream will be "foo"
(this allows multiple virtual git servers to share a (this allows multiple virtual Git servers to share a
link-level address). link-level address).
"ext::git-server-alias foo %G/repo% with% spaces %Vfoo":: "ext::git-server-alias foo %G/repo% with% spaces %Vfoo"::
Represents a repository with path '/repo with spaces' accessed Represents a repository with path '/repo with spaces' accessed
using the helper program "git-server-alias foo". The hostname for using the helper program "git-server-alias foo". The hostname for
the remote server passed in the protocol stream will be "foo" the remote server passed in the protocol stream will be "foo"
(this allows multiple virtual git servers to share a (this allows multiple virtual Git servers to share a
link-level address). link-level address).
"ext::git-ssl foo.example /bar":: "ext::git-ssl foo.example /bar"::
@ -118,7 +118,7 @@ begins with `ext::`. Examples:
Documentation Documentation
-------------- --------------
Documentation by Ilari Liusvaara, Jonathan Nieder and the git list Documentation by Ilari Liusvaara, Jonathan Nieder and the Git list
<git@vger.kernel.org> <git@vger.kernel.org>
GIT GIT

View File

@ -11,14 +11,14 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
This helper uses specified file descriptors to connect to a remote git server. This helper uses specified file descriptors to connect to a remote Git server.
This is not meant for end users but for programs and scripts calling git This is not meant for end users but for programs and scripts calling git
fetch, push or archive. fetch, push or archive.
If only <infd> is given, it is assumed to be a bidirectional socket connected If only <infd> is given, it is assumed to be a bidirectional socket connected
to remote git server (git-upload-pack, git-receive-pack or to remote Git server (git-upload-pack, git-receive-pack or
git-upload-achive). If both <infd> and <outfd> are given, they are assumed git-upload-achive). If both <infd> and <outfd> are given, they are assumed
to be pipes connected to a remote git server (<infd> being the inbound pipe to be pipes connected to a remote Git server (<infd> being the inbound pipe
and <outfd> being the outbound pipe. and <outfd> being the outbound pipe.
It is assumed that any handshaking procedures have already been completed It is assumed that any handshaking procedures have already been completed
@ -52,7 +52,7 @@ EXAMPLES
Documentation Documentation
-------------- --------------
Documentation by Ilari Liusvaara and the git list <git@vger.kernel.org> Documentation by Ilari Liusvaara and the Git list <git@vger.kernel.org>
GIT GIT
--- ---

View File

@ -14,17 +14,17 @@ DESCRIPTION
----------- -----------
Remote helper programs are normally not used directly by end users, Remote helper programs are normally not used directly by end users,
but they are invoked by git when it needs to interact with remote but they are invoked by Git when it needs to interact with remote
repositories git does not support natively. A given helper will repositories Git does not support natively. A given helper will
implement a subset of the capabilities documented here. When git implement a subset of the capabilities documented here. When Git
needs to interact with a repository using a remote helper, it spawns needs to interact with a repository using a remote helper, it spawns
the helper as an independent process, sends commands to the helper's the helper as an independent process, sends commands to the helper's
standard input, and expects results from the helper's standard standard input, and expects results from the helper's standard
output. Because a remote helper runs as an independent process from output. Because a remote helper runs as an independent process from
git, there is no need to re-link git to add a new helper, nor any Git, there is no need to re-link Git to add a new helper, nor any
need to link the helper with the implementation of git. need to link the helper with the implementation of Git.
Every helper must support the "capabilities" command, which git Every helper must support the "capabilities" command, which Git
uses to determine what other commands the helper will accept. Those uses to determine what other commands the helper will accept. Those
other commands can be used to discover and update remote refs, other commands can be used to discover and update remote refs,
transport objects between the object database and the remote repository, transport objects between the object database and the remote repository,
@ -39,15 +39,15 @@ INVOCATION
---------- ----------
Remote helper programs are invoked with one or (optionally) two Remote helper programs are invoked with one or (optionally) two
arguments. The first argument specifies a remote repository as in git; arguments. The first argument specifies a remote repository as in Git;
it is either the name of a configured remote or a URL. The second it is either the name of a configured remote or a URL. The second
argument specifies a URL; it is usually of the form argument specifies a URL; it is usually of the form
'<transport>://<address>', but any arbitrary string is possible. '<transport>://<address>', but any arbitrary string is possible.
The 'GIT_DIR' environment variable is set up for the remote helper The 'GIT_DIR' environment variable is set up for the remote helper
and can be used to determine where to store additional data or from and can be used to determine where to store additional data or from
which directory to invoke auxiliary git commands. which directory to invoke auxiliary Git commands.
When git encounters a URL of the form '<transport>://<address>', where When Git encounters a URL of the form '<transport>://<address>', where
'<transport>' is a protocol that it cannot handle natively, it '<transport>' is a protocol that it cannot handle natively, it
automatically invokes 'git remote-<transport>' with the full URL as automatically invokes 'git remote-<transport>' with the full URL as
the second argument. If such a URL is encountered directly on the the second argument. If such a URL is encountered directly on the
@ -55,14 +55,14 @@ command line, the first argument is the same as the second, and if it
is encountered in a configured remote, the first argument is the name is encountered in a configured remote, the first argument is the name
of that remote. of that remote.
A URL of the form '<transport>::<address>' explicitly instructs git to A URL of the form '<transport>::<address>' explicitly instructs Git to
invoke 'git remote-<transport>' with '<address>' as the second invoke 'git remote-<transport>' with '<address>' as the second
argument. If such a URL is encountered directly on the command line, argument. If such a URL is encountered directly on the command line,
the first argument is '<address>', and if it is encountered in a the first argument is '<address>', and if it is encountered in a
configured remote, the first argument is the name of that remote. configured remote, the first argument is the name of that remote.
Additionally, when a configured remote has 'remote.<name>.vcs' set to Additionally, when a configured remote has 'remote.<name>.vcs' set to
'<transport>', git explicitly invokes 'git remote-<transport>' with '<transport>', Git explicitly invokes 'git remote-<transport>' with
'<name>' as the first argument. If set, the second argument is '<name>' as the first argument. If set, the second argument is
'remote.<name>.url'; otherwise, the second argument is omitted. 'remote.<name>.url'; otherwise, the second argument is omitted.
@ -85,7 +85,7 @@ Capabilities
~~~~~~~~~~~~ ~~~~~~~~~~~~
Each remote helper is expected to support only a subset of commands. Each remote helper is expected to support only a subset of commands.
The operations a helper supports are declared to git in the response The operations a helper supports are declared to Git in the response
to the `capabilities` command (see COMMANDS, below). to the `capabilities` command (see COMMANDS, below).
In the following, we list all defined capabilities and for In the following, we list all defined capabilities and for
@ -114,10 +114,10 @@ Supported commands: 'list for-push', 'push'.
+ +
Supported commands: 'list for-push', 'export'. Supported commands: 'list for-push', 'export'.
If a helper advertises 'connect', git will use it if possible and If a helper advertises 'connect', Git will use it if possible and
fall back to another capability if the helper requests so when fall back to another capability if the helper requests so when
connecting (see the 'connect' command under COMMANDS). connecting (see the 'connect' command under COMMANDS).
When choosing between 'push' and 'export', git prefers 'push'. When choosing between 'push' and 'export', Git prefers 'push'.
Other frontends may have some other order of preference. Other frontends may have some other order of preference.
@ -126,7 +126,7 @@ Capabilities for Fetching
'connect':: 'connect'::
Can try to connect to 'git upload-pack' (for fetching), Can try to connect to 'git upload-pack' (for fetching),
'git receive-pack', etc for communication using the 'git receive-pack', etc for communication using the
git's native packfile protocol. This Git's native packfile protocol. This
requires a bidirectional, full-duplex connection. requires a bidirectional, full-duplex connection.
+ +
Supported commands: 'connect'. Supported commands: 'connect'.
@ -143,10 +143,10 @@ Supported commands: 'list', 'fetch'.
+ +
Supported commands: 'list', 'import'. Supported commands: 'list', 'import'.
If a helper advertises 'connect', git will use it if possible and If a helper advertises 'connect', Git will use it if possible and
fall back to another capability if the helper requests so when fall back to another capability if the helper requests so when
connecting (see the 'connect' command under COMMANDS). connecting (see the 'connect' command under COMMANDS).
When choosing between 'fetch' and 'import', git prefers 'fetch'. When choosing between 'fetch' and 'import', Git prefers 'fetch'.
Other frontends may have some other order of preference. Other frontends may have some other order of preference.
Miscellaneous capabilities Miscellaneous capabilities
@ -183,22 +183,22 @@ there is an implied `refspec *:*`.
to retrieve information about blobs and trees that already exist in to retrieve information about blobs and trees that already exist in
fast-import's memory. This requires a channel from fast-import to the fast-import's memory. This requires a channel from fast-import to the
remote-helper. remote-helper.
If it is advertised in addition to "import", git establishes a pipe from If it is advertised in addition to "import", Git establishes a pipe from
fast-import to the remote-helper's stdin. fast-import to the remote-helper's stdin.
It follows that git and fast-import are both connected to the It follows that Git and fast-import are both connected to the
remote-helper's stdin. Because git can send multiple commands to remote-helper's stdin. Because Git can send multiple commands to
the remote-helper it is required that helpers that use 'bidi-import' the remote-helper it is required that helpers that use 'bidi-import'
buffer all 'import' commands of a batch before sending data to fast-import. buffer all 'import' commands of a batch before sending data to fast-import.
This is to prevent mixing commands and fast-import responses on the This is to prevent mixing commands and fast-import responses on the
helper's stdin. helper's stdin.
'export-marks' <file>:: 'export-marks' <file>::
This modifies the 'export' capability, instructing git to dump the This modifies the 'export' capability, instructing Git to dump the
internal marks table to <file> when complete. For details, internal marks table to <file> when complete. For details,
read up on '--export-marks=<file>' in linkgit:git-fast-export[1]. read up on '--export-marks=<file>' in linkgit:git-fast-export[1].
'import-marks' <file>:: 'import-marks' <file>::
This modifies the 'export' capability, instructing git to load the This modifies the 'export' capability, instructing Git to load the
marks specified in <file> before processing any input. For details, marks specified in <file> before processing any input. For details,
read up on '--import-marks=<file>' in linkgit:git-fast-export[1]. read up on '--import-marks=<file>' in linkgit:git-fast-export[1].
@ -213,7 +213,7 @@ Commands are given by the caller on the helper's standard input, one per line.
'capabilities':: 'capabilities'::
Lists the capabilities of the helper, one per line, ending Lists the capabilities of the helper, one per line, ending
with a blank line. Each capability may be preceded with '*', with a blank line. Each capability may be preceded with '*',
which marks them mandatory for git versions using the remote which marks them mandatory for Git versions using the remote
helper to understand. Any unknown mandatory capability is a helper to understand. Any unknown mandatory capability is a
fatal error. fatal error.
+ +
@ -376,7 +376,7 @@ OPTIONS
------- -------
The following options are defined and (under suitable circumstances) The following options are defined and (under suitable circumstances)
set by git if the remote helper has the 'option' capability. set by Git if the remote helper has the 'option' capability.
'option verbosity' <n>:: 'option verbosity' <n>::
Changes the verbosity of messages displayed by the helper. Changes the verbosity of messages displayed by the helper.

View File

@ -22,7 +22,7 @@ replacement object.
Unless `-f` is given, the 'replace' reference must not yet exist. Unless `-f` is given, the 'replace' reference must not yet exist.
Replacement references will be used by default by all git commands Replacement references will be used by default by all Git commands
except those doing reachability traversal (prune, pack transfer and except those doing reachability traversal (prune, pack transfer and
fsck). fsck).

View File

@ -99,7 +99,7 @@ between the two operands. The following two commands are equivalent:
$ git rev-list A...B $ git rev-list A...B
----------------------------------------------------------------------- -----------------------------------------------------------------------
'rev-list' is a very essential git command, since it 'rev-list' is a very essential Git command, since it
provides the ability to build and traverse commit ancestry graphs. For provides the ability to build and traverse commit ancestry graphs. For
this reason, it has a lot of different options that enables it to be this reason, it has a lot of different options that enables it to be
used by commands as different as 'git bisect' and used by commands as different as 'git bisect' and

View File

@ -14,7 +14,7 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
Many git porcelainish commands take mixture of flags Many Git porcelainish commands take mixture of flags
(i.e. parameters that begin with a dash '-') and parameters (i.e. parameters that begin with a dash '-') and parameters
meant for the underlying 'git rev-list' command they use internally meant for the underlying 'git rev-list' command they use internally
and flags and parameters for the other commands they use and flags and parameters for the other commands they use
@ -147,7 +147,7 @@ shown. If the pattern does not contain a globbing character (`?`,
relative to the current working directory. relative to the current working directory.
+ +
If `$GIT_DIR` is not defined and the current directory If `$GIT_DIR` is not defined and the current directory
is not detected to lie in a git repository or work tree is not detected to lie in a Git repository or work tree
print a message to stderr and exit with nonzero status. print a message to stderr and exit with nonzero status.
--is-inside-git-dir:: --is-inside-git-dir::
@ -187,9 +187,11 @@ print a message to stderr and exit with nonzero status.
Flags and parameters to be parsed. Flags and parameters to be parsed.
--resolve-git-dir <path>:: --resolve-git-dir <path>::
Check if <path> is a valid git-dir or a git-file pointing to a valid Check if <path> is a valid repository or a gitfile that
git-dir. If <path> is a valid git-dir the resolved path to git-dir will points at a valid repository, and print the location of the
be printed. repository. If <path> is a gitfile then the resolved path
to the real repository is printed.
include::revisions.txt[] include::revisions.txt[]

View File

@ -28,7 +28,7 @@ OPTIONS
------- -------
<file>...:: <file>...::
Files to remove. Fileglobs (e.g. `*.c`) can be given to Files to remove. Fileglobs (e.g. `*.c`) can be given to
remove all matching files. If you want git to expand remove all matching files. If you want Git to expand
file glob characters, you may need to shell-escape them. file glob characters, you may need to shell-escape them.
A leading directory name A leading directory name
(e.g. `dir` to remove `dir/file1` and `dir/file2`) can be (e.g. `dir` to remove `dir/file1` and `dir/file2`) can be
@ -74,8 +74,8 @@ DISCUSSION
The <file> list given to the command can be exact pathnames, The <file> list given to the command can be exact pathnames,
file glob patterns, or leading directory names. The command file glob patterns, or leading directory names. The command
removes only the paths that are known to git. Giving the name of removes only the paths that are known to Git. Giving the name of
a file that you have not told git about does not remove that file. a file that you have not told Git about does not remove that file.
File globbing matches across directory boundaries. Thus, given File globbing matches across directory boundaries. Thus, given
two directories `d` and `d2`, there is a difference between two directories `d` and `d2`, there is a difference between
@ -137,7 +137,7 @@ git diff --name-only --diff-filter=D -z | xargs -0 git rm --cached
Submodules Submodules
~~~~~~~~~~ ~~~~~~~~~~
Only submodules using a gitfile (which means they were cloned Only submodules using a gitfile (which means they were cloned
with a git version 1.7.8 or newer) will be removed from the work with a Git version 1.7.8 or newer) will be removed from the work
tree, as their repository lives inside the .git directory of the tree, as their repository lives inside the .git directory of the
superproject. If a submodule (or one of those nested inside it) superproject. If a submodule (or one of those nested inside it)
still uses a .git directory, `git rm` will fail - no matter if forced still uses a .git directory, `git rm` will fail - no matter if forced
@ -156,7 +156,7 @@ EXAMPLES
`Documentation` directory and any of its subdirectories. `Documentation` directory and any of its subdirectories.
+ +
Note that the asterisk `*` is quoted from the shell in this Note that the asterisk `*` is quoted from the shell in this
example; this lets git, and not the shell, expand the pathnames example; this lets Git, and not the shell, expand the pathnames
of files and subdirectories under the `Documentation/` directory. of files and subdirectories under the `Documentation/` directory.
`git rm -f git-*.sh`:: `git rm -f git-*.sh`::

View File

@ -67,7 +67,7 @@ The --cc option must be repeated for each user you want on the cc list.
When '--compose' is used, git send-email will use the From, Subject, and When '--compose' is used, git send-email will use the From, Subject, and
In-Reply-To headers specified in the message. If the body of the message In-Reply-To headers specified in the message. If the body of the message
(what you type after the headers and a blank line) only contains blank (what you type after the headers and a blank line) only contains blank
(or GIT: prefixed) lines the summary won't be sent, but From, Subject, (or Git: prefixed) lines the summary won't be sent, but From, Subject,
and In-Reply-To headers will be used unless they are removed. and In-Reply-To headers will be used unless they are removed.
+ +
Missing From or In-Reply-To headers will be prompted for. Missing From or In-Reply-To headers will be prompted for.

View File

@ -3,7 +3,7 @@ git-send-pack(1)
NAME NAME
---- ----
git-send-pack - Push objects over git protocol to another repository git-send-pack - Push objects over Git protocol to another repository
SYNOPSIS SYNOPSIS

View File

@ -3,7 +3,7 @@ git-sh-setup(1)
NAME NAME
---- ----
git-sh-setup - Common git shell script setup code git-sh-setup - Common Git shell script setup code
SYNOPSIS SYNOPSIS
-------- --------
@ -19,7 +19,7 @@ Porcelain-ish scripts and/or are writing new ones.
The 'git sh-setup' scriptlet is designed to be sourced (using The 'git sh-setup' scriptlet is designed to be sourced (using
`.`) by other shell scripts to set up some variables pointing at `.`) by other shell scripts to set up some variables pointing at
the normal git directories and a few helper shell functions. the normal Git directories and a few helper shell functions.
Before sourcing it, your script should set up a few variables; Before sourcing it, your script should set up a few variables;
`USAGE` (and `LONG_USAGE`, if any) is used to define message `USAGE` (and `LONG_USAGE`, if any) is used to define message

View File

@ -14,7 +14,7 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
Reads given idx file for packed git archive created with Reads given idx file for packed Git archive created with
'git pack-objects' command, and dumps its contents. 'git pack-objects' command, and dumps its contents.
The information it outputs is subset of what you can get from The information it outputs is subset of what you can get from

View File

@ -16,7 +16,7 @@ DESCRIPTION
Displays paths that have differences between the index file and the Displays paths that have differences between the index file and the
current HEAD commit, paths that have differences between the working current HEAD commit, paths that have differences between the working
tree and the index file, and paths in the working tree that are not tree and the index file, and paths in the working tree that are not
tracked by git (and are not ignored by linkgit:gitignore[5]). The first tracked by Git (and are not ignored by linkgit:gitignore[5]). The first
are what you _would_ commit by running `git commit`; the second and are what you _would_ commit by running `git commit`; the second and
third are what you _could_ commit by running 'git add' before running third are what you _could_ commit by running 'git add' before running
`git commit`. `git commit`.
@ -35,7 +35,7 @@ OPTIONS
--porcelain:: --porcelain::
Give the output in an easy-to-parse format for scripts. Give the output in an easy-to-parse format for scripts.
This is similar to the short output, but will remain stable This is similar to the short output, but will remain stable
across git versions and regardless of user configuration. See across Git versions and regardless of user configuration. See
below for details. below for details.
--long:: --long::
@ -96,7 +96,7 @@ The default, long format, is designed to be human readable,
verbose and descriptive. Its contents and format are subject to change verbose and descriptive. Its contents and format are subject to change
at any time. at any time.
The paths mentioned in the output, unlike many other git commands, are The paths mentioned in the output, unlike many other Git commands, are
made relative to the current directory if you are working in a made relative to the current directory if you are working in a
subdirectory (this is on purpose, to help cutting and pasting). See subdirectory (this is on purpose, to help cutting and pasting). See
the status.relativePaths config option below. the status.relativePaths config option below.
@ -168,7 +168,7 @@ Porcelain Format
~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~
The porcelain format is similar to the short format, but is guaranteed The porcelain format is similar to the short format, but is guaranteed
not to change in a backwards-incompatible way between git versions or not to change in a backwards-incompatible way between Git versions or
based on user configuration. This makes it ideal for parsing by scripts. based on user configuration. This makes it ideal for parsing by scripts.
The description of the short format above also describes the porcelain The description of the short format above also describes the porcelain
format, with a few exceptions: format, with a few exceptions:

View File

@ -14,7 +14,7 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
Clean the input in the manner used by 'git' for text such as commit Clean the input in the manner used by Git for text such as commit
messages, notes, tags and branch descriptions. messages, notes, tags and branch descriptions.
With no arguments, this will: With no arguments, this will:

View File

@ -91,7 +91,7 @@ working directory is used instead.
<path> is the relative location for the cloned submodule to <path> is the relative location for the cloned submodule to
exist in the superproject. If <path> does not exist, then the exist in the superproject. If <path> does not exist, then the
submodule is created by cloning from the named URL. If <path> does submodule is created by cloning from the named URL. If <path> does
exist and is already a valid git repository, then this is added exist and is already a valid Git repository, then this is added
to the changeset without cloning. This second form is provided to the changeset without cloning. This second form is provided
to ease creating a new submodule from scratch, and presumes to ease creating a new submodule from scratch, and presumes
the user will later push the submodule to the given URL. the user will later push the submodule to the given URL.

View File

@ -3,7 +3,7 @@ git-svn(1)
NAME NAME
---- ----
git-svn - Bidirectional operation between a Subversion repository and git git-svn - Bidirectional operation between a Subversion repository and Git
SYNOPSIS SYNOPSIS
-------- --------
@ -12,8 +12,8 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
'git svn' is a simple conduit for changesets between Subversion and git. 'git svn' is a simple conduit for changesets between Subversion and Git.
It provides a bidirectional flow of changes between a Subversion and a git It provides a bidirectional flow of changes between a Subversion and a Git
repository. repository.
'git svn' can track a standard Subversion repository, 'git svn' can track a standard Subversion repository,
@ -21,15 +21,15 @@ following the common "trunk/branches/tags" layout, with the --stdlayout option.
It can also follow branches and tags in any layout with the -T/-t/-b options It can also follow branches and tags in any layout with the -T/-t/-b options
(see options to 'init' below, and also the 'clone' command). (see options to 'init' below, and also the 'clone' command).
Once tracking a Subversion repository (with any of the above methods), the git Once tracking a Subversion repository (with any of the above methods), the Git
repository can be updated from Subversion by the 'fetch' command and repository can be updated from Subversion by the 'fetch' command and
Subversion updated from git by the 'dcommit' command. Subversion updated from Git by the 'dcommit' command.
COMMANDS COMMANDS
-------- --------
'init':: 'init'::
Initializes an empty git repository with additional Initializes an empty Git repository with additional
metadata directories for 'git svn'. The Subversion URL metadata directories for 'git svn'. The Subversion URL
may be specified as a command-line argument, or as full may be specified as a command-line argument, or as full
URL arguments to -T/-t/-b. Optionally, the target URL arguments to -T/-t/-b. Optionally, the target
@ -199,9 +199,9 @@ and have no uncommitted changes.
Commit each diff from the current branch directly to the SVN Commit each diff from the current branch directly to the SVN
repository, and then rebase or reset (depending on whether or repository, and then rebase or reset (depending on whether or
not there is a diff between SVN and head). This will create not there is a diff between SVN and head). This will create
a revision in SVN for each commit in git. a revision in SVN for each commit in Git.
+ +
When an optional git branch name (or a git commit object name) When an optional Git branch name (or a Git commit object name)
is specified as an argument, the subcommand works on the specified is specified as an argument, the subcommand works on the specified
branch, not on the current branch. branch, not on the current branch.
+ +
@ -316,7 +316,7 @@ New features:
+ +
-- --
--show-commit;; --show-commit;;
shows the git commit sha1, as well shows the Git commit sha1, as well
--oneline;; --oneline;;
our version of --pretty=oneline our version of --pretty=oneline
-- --
@ -337,13 +337,13 @@ Any other arguments are passed directly to 'git log'
+ +
--git-format;; --git-format;;
Produce output in the same format as 'git blame', but with Produce output in the same format as 'git blame', but with
SVN revision numbers instead of git commit hashes. In this mode, SVN revision numbers instead of Git commit hashes. In this mode,
changes that haven't been committed to SVN (including local changes that haven't been committed to SVN (including local
working-copy edits) are shown as revision 0. working-copy edits) are shown as revision 0.
'find-rev':: 'find-rev'::
When given an SVN revision number of the form 'rN', returns the When given an SVN revision number of the form 'rN', returns the
corresponding git commit hash (this can optionally be followed by a corresponding Git commit hash (this can optionally be followed by a
tree-ish to specify which branch should be searched). When given a tree-ish to specify which branch should be searched). When given a
tree-ish, returns the corresponding SVN revision number. tree-ish, returns the corresponding SVN revision number.
+ +
@ -378,7 +378,7 @@ Any other arguments are passed directly to 'git log'
the $GIT_DIR/info/exclude file. the $GIT_DIR/info/exclude file.
'mkdirs':: 'mkdirs'::
Attempts to recreate empty directories that core git cannot track Attempts to recreate empty directories that core Git cannot track
based on information in $GIT_DIR/svn/<refname>/unhandled.log files. based on information in $GIT_DIR/svn/<refname>/unhandled.log files.
Empty directories are automatically recreated when using Empty directories are automatically recreated when using
"git svn clone" and "git svn rebase", so "mkdirs" is intended "git svn clone" and "git svn rebase", so "mkdirs" is intended
@ -510,9 +510,9 @@ order. Only the leading sha1 is read from each line, so
+ +
Remove directories from the SVN tree if there are no files left Remove directories from the SVN tree if there are no files left
behind. SVN can version empty directories, and they are not behind. SVN can version empty directories, and they are not
removed by default if there are no files left in them. git removed by default if there are no files left in them. Git
cannot version empty directories. Enabling this flag will make cannot version empty directories. Enabling this flag will make
the commit to SVN act like git. the commit to SVN act like Git.
+ +
[verse] [verse]
config key: svn.rmdir config key: svn.rmdir
@ -599,7 +599,7 @@ Passed directly to 'git rebase' when using 'dcommit' if a
This can be used with the 'dcommit', 'rebase', 'branch' and This can be used with the 'dcommit', 'rebase', 'branch' and
'tag' commands. 'tag' commands.
+ +
For 'dcommit', print out the series of git arguments that would show For 'dcommit', print out the series of Git arguments that would show
which diffs would be committed to SVN. which diffs would be committed to SVN.
+ +
For 'rebase', display the local branch associated with the upstream svn For 'rebase', display the local branch associated with the upstream svn
@ -610,14 +610,14 @@ For 'branch' and 'tag', display the urls that will be used for copying when
creating the branch or tag. creating the branch or tag.
--use-log-author:: --use-log-author::
When retrieving svn commits into git (as part of 'fetch', 'rebase', or When retrieving svn commits into Git (as part of 'fetch', 'rebase', or
'dcommit' operations), look for the first `From:` or `Signed-off-by:` line 'dcommit' operations), look for the first `From:` or `Signed-off-by:` line
in the log message and use that as the author string. in the log message and use that as the author string.
--add-author-from:: --add-author-from::
When committing to svn from git (as part of 'commit-diff', 'set-tree' or 'dcommit' When committing to svn from Git (as part of 'commit-diff', 'set-tree' or 'dcommit'
operations), if the existing log message doesn't already have a operations), if the existing log message doesn't already have a
`From:` or `Signed-off-by:` line, append a `From:` line based on the `From:` or `Signed-off-by:` line, append a `From:` line based on the
git commit's author string. If you use this, then `--use-log-author` Git commit's author string. If you use this, then `--use-log-author`
will retrieve a valid author string for all commits. will retrieve a valid author string for all commits.
@ -642,7 +642,7 @@ ADVANCED OPTIONS
one of the repository layout options --trunk, --tags, one of the repository layout options --trunk, --tags,
--branches, --stdlayout). For each tracked branch, try to find --branches, --stdlayout). For each tracked branch, try to find
out where its revision was copied from, and set out where its revision was copied from, and set
a suitable parent in the first git commit for the branch. a suitable parent in the first Git commit for the branch.
This is especially helpful when we're tracking a directory This is especially helpful when we're tracking a directory
that has been moved around within the repository. If this that has been moved around within the repository. If this
feature is disabled, the branches created by 'git svn' will all feature is disabled, the branches created by 'git svn' will all
@ -674,7 +674,7 @@ option for (hopefully) obvious reasons.
+ +
This option is NOT recommended as it makes it difficult to track down This option is NOT recommended as it makes it difficult to track down
old references to SVN revision numbers in existing documentation, bug old references to SVN revision numbers in existing documentation, bug
reports and archives. If you plan to eventually migrate from SVN to git reports and archives. If you plan to eventually migrate from SVN to Git
and are certain about dropping SVN history, consider and are certain about dropping SVN history, consider
linkgit:git-filter-branch[1] instead. filter-branch also allows linkgit:git-filter-branch[1] instead. filter-branch also allows
reformatting of metadata for ease-of-reading and rewriting authorship reformatting of metadata for ease-of-reading and rewriting authorship
@ -714,7 +714,7 @@ svn-remote.<name>.rewriteUUID::
svn-remote.<name>.pushurl:: svn-remote.<name>.pushurl::
Similar to git's 'remote.<name>.pushurl', this key is designed Similar to Git's 'remote.<name>.pushurl', this key is designed
to be used in cases where 'url' points to an SVN repository to be used in cases where 'url' points to an SVN repository
via a read-only transport, to provide an alternate read/write via a read-only transport, to provide an alternate read/write
transport. It is assumed that both keys point to the same transport. It is assumed that both keys point to the same
@ -768,15 +768,15 @@ Tracking and contributing to the trunk of a Subversion-managed project
cd trunk cd trunk
# You should be on master branch, double-check with 'git branch' # You should be on master branch, double-check with 'git branch'
git branch git branch
# Do some work and commit locally to git: # Do some work and commit locally to Git:
git commit ... git commit ...
# Something is committed to SVN, rebase your local changes against the # Something is committed to SVN, rebase your local changes against the
# latest changes in SVN: # latest changes in SVN:
git svn rebase git svn rebase
# Now commit your changes (that were committed previously using git) to SVN, # Now commit your changes (that were committed previously using Git) to SVN,
# as well as automatically updating your working HEAD: # as well as automatically updating your working HEAD:
git svn dcommit git svn dcommit
# Append svn:ignore settings to the default git exclude file: # Append svn:ignore settings to the default Git exclude file:
git svn show-ignore >> .git/info/exclude git svn show-ignore >> .git/info/exclude
------------------------------------------------------------------------ ------------------------------------------------------------------------
@ -816,7 +816,7 @@ have each person clone that repository with 'git clone':
git remote add origin server:/pub/project git remote add origin server:/pub/project
git config --replace-all remote.origin.fetch '+refs/remotes/*:refs/remotes/*' git config --replace-all remote.origin.fetch '+refs/remotes/*:refs/remotes/*'
git fetch git fetch
# Prevent fetch/pull from remote git server in the future, # Prevent fetch/pull from remote Git server in the future,
# we only want to use git svn for future updates # we only want to use git svn for future updates
git config --remove-section remote.origin git config --remove-section remote.origin
# Create a local branch from one of the branches just fetched # Create a local branch from one of the branches just fetched
@ -849,13 +849,13 @@ While 'git svn' can track
copy history (including branches and tags) for repositories adopting a copy history (including branches and tags) for repositories adopting a
standard layout, it cannot yet represent merge history that happened standard layout, it cannot yet represent merge history that happened
inside git back upstream to SVN users. Therefore it is advised that inside git back upstream to SVN users. Therefore it is advised that
users keep history as linear as possible inside git to ease users keep history as linear as possible inside Git to ease
compatibility with SVN (see the CAVEATS section below). compatibility with SVN (see the CAVEATS section below).
HANDLING OF SVN BRANCHES HANDLING OF SVN BRANCHES
------------------------ ------------------------
If 'git svn' is configured to fetch branches (and --follow-branches If 'git svn' is configured to fetch branches (and --follow-branches
is in effect), it sometimes creates multiple git branches for one is in effect), it sometimes creates multiple Git branches for one
SVN branch, where the addtional branches have names of the form SVN branch, where the addtional branches have names of the form
'branchname@nnn' (with nnn an SVN revision number). These additional 'branchname@nnn' (with nnn an SVN revision number). These additional
branches are created if 'git svn' cannot find a parent commit for the branches are created if 'git svn' cannot find a parent commit for the
@ -865,17 +865,17 @@ the other branches.
Normally, the first commit in an SVN branch consists Normally, the first commit in an SVN branch consists
of a copy operation. 'git svn' will read this commit to get the SVN of a copy operation. 'git svn' will read this commit to get the SVN
revision the branch was created from. It will then try to find the revision the branch was created from. It will then try to find the
git commit that corresponds to this SVN revision, and use that as the Git commit that corresponds to this SVN revision, and use that as the
parent of the branch. However, it is possible that there is no suitable parent of the branch. However, it is possible that there is no suitable
git commit to serve as parent. This will happen, among other reasons, Git commit to serve as parent. This will happen, among other reasons,
if the SVN branch is a copy of a revision that was not fetched by 'git if the SVN branch is a copy of a revision that was not fetched by 'git
svn' (e.g. because it is an old revision that was skipped with svn' (e.g. because it is an old revision that was skipped with
'--revision'), or if in SVN a directory was copied that is not tracked '--revision'), or if in SVN a directory was copied that is not tracked
by 'git svn' (such as a branch that is not tracked at all, or a by 'git svn' (such as a branch that is not tracked at all, or a
subdirectory of a tracked branch). In these cases, 'git svn' will still subdirectory of a tracked branch). In these cases, 'git svn' will still
create a git branch, but instead of using an existing git commit as the create a Git branch, but instead of using an existing Git commit as the
parent of the branch, it will read the SVN history of the directory the parent of the branch, it will read the SVN history of the directory the
branch was copied from and create appropriate git commits. This is branch was copied from and create appropriate Git commits. This is
indicated by the message "Initializing parent: <branchname>". indicated by the message "Initializing parent: <branchname>".
Additionally, it will create a special branch named Additionally, it will create a special branch named
@ -885,15 +885,15 @@ created parent commit of the branch. If in SVN the branch was deleted
and later recreated from a different version, there will be multiple and later recreated from a different version, there will be multiple
such branches with an '@'. such branches with an '@'.
Note that this may mean that multiple git commits are created for a Note that this may mean that multiple Git commits are created for a
single SVN revision. single SVN revision.
An example: in an SVN repository with a standard An example: in an SVN repository with a standard
trunk/tags/branches layout, a directory trunk/sub is created in r.100. trunk/tags/branches layout, a directory trunk/sub is created in r.100.
In r.200, trunk/sub is branched by copying it to branches/. 'git svn In r.200, trunk/sub is branched by copying it to branches/. 'git svn
clone -s' will then create a branch 'sub'. It will also create new git clone -s' will then create a branch 'sub'. It will also create new Git
commits for r.100 through r.199 and use these as the history of branch commits for r.100 through r.199 and use these as the history of branch
'sub'. Thus there will be two git commits for each revision from r.100 'sub'. Thus there will be two Git commits for each revision from r.100
to r.199 (one containing trunk/, one containing trunk/sub/). Finally, to r.199 (one containing trunk/, one containing trunk/sub/). Finally,
it will create a branch 'sub@200' pointing to the new parent commit of it will create a branch 'sub@200' pointing to the new parent commit of
branch 'sub' (i.e. the commit for r.200 and trunk/sub/). branch 'sub' (i.e. the commit for r.200 and trunk/sub/).
@ -904,13 +904,13 @@ CAVEATS
For the sake of simplicity and interoperating with Subversion, For the sake of simplicity and interoperating with Subversion,
it is recommended that all 'git svn' users clone, fetch and dcommit it is recommended that all 'git svn' users clone, fetch and dcommit
directly from the SVN server, and avoid all 'git clone'/'pull'/'merge'/'push' directly from the SVN server, and avoid all 'git clone'/'pull'/'merge'/'push'
operations between git repositories and branches. The recommended operations between Git repositories and branches. The recommended
method of exchanging code between git branches and users is method of exchanging code between Git branches and users is
'git format-patch' and 'git am', or just 'dcommit'ing to the SVN repository. 'git format-patch' and 'git am', or just 'dcommit'ing to the SVN repository.
Running 'git merge' or 'git pull' is NOT recommended on a branch you Running 'git merge' or 'git pull' is NOT recommended on a branch you
plan to 'dcommit' from because Subversion users cannot see any plan to 'dcommit' from because Subversion users cannot see any
merges you've made. Furthermore, if you merge or pull from a git branch merges you've made. Furthermore, if you merge or pull from a Git branch
that is a mirror of an SVN branch, 'dcommit' may commit to the wrong that is a mirror of an SVN branch, 'dcommit' may commit to the wrong
branch. branch.
@ -929,7 +929,7 @@ any 'git svn' metadata, or config. So repositories created and managed with
using 'git svn' should use 'rsync' for cloning, if cloning is to be done using 'git svn' should use 'rsync' for cloning, if cloning is to be done
at all. at all.
Since 'dcommit' uses rebase internally, any git branches you 'git push' to Since 'dcommit' uses rebase internally, any Git branches you 'git push' to
before 'dcommit' on will require forcing an overwrite of the existing ref before 'dcommit' on will require forcing an overwrite of the existing ref
on the remote repository. This is generally considered bad practice, on the remote repository. This is generally considered bad practice,
see the linkgit:git-push[1] documentation for details. see the linkgit:git-push[1] documentation for details.
@ -941,7 +941,7 @@ dcommit with SVN is analogous to that.
When cloning an SVN repository, if none of the options for describing When cloning an SVN repository, if none of the options for describing
the repository layout is used (--trunk, --tags, --branches, the repository layout is used (--trunk, --tags, --branches,
--stdlayout), 'git svn clone' will create a git repository with --stdlayout), 'git svn clone' will create a Git repository with
completely linear history, where branches and tags appear as separate completely linear history, where branches and tags appear as separate
directories in the working copy. While this is the easiest way to get a directories in the working copy. While this is the easiest way to get a
copy of a complete repository, for projects with many branches it will copy of a complete repository, for projects with many branches it will
@ -957,7 +957,7 @@ branches and tags is required, the options '--trunk' / '--branches' /
When using multiple --branches or --tags, 'git svn' does not automatically When using multiple --branches or --tags, 'git svn' does not automatically
handle name collisions (for example, if two branches from different paths have handle name collisions (for example, if two branches from different paths have
the same name, or if a branch and a tag have the same name). In these cases, the same name, or if a branch and a tag have the same name). In these cases,
use 'init' to set up your git repository then, before your first 'fetch', edit use 'init' to set up your Git repository then, before your first 'fetch', edit
the .git/config file so that the branches and tags are associated with the .git/config file so that the branches and tags are associated with
different name spaces. For example: different name spaces. For example:
@ -970,12 +970,12 @@ BUGS
We ignore all SVN properties except svn:executable. Any unhandled We ignore all SVN properties except svn:executable. Any unhandled
properties are logged to $GIT_DIR/svn/<refname>/unhandled.log properties are logged to $GIT_DIR/svn/<refname>/unhandled.log
Renamed and copied directories are not detected by git and hence not Renamed and copied directories are not detected by Git and hence not
tracked when committing to SVN. I do not plan on adding support for tracked when committing to SVN. I do not plan on adding support for
this as it's quite difficult and time-consuming to get working for all this as it's quite difficult and time-consuming to get working for all
the possible corner cases (git doesn't do it, either). Committing the possible corner cases (Git doesn't do it, either). Committing
renamed and copied files is fully supported if they're similar enough renamed and copied files is fully supported if they're similar enough
for git to detect them. for Git to detect them.
In SVN, it is possible (though discouraged) to commit changes to a tag In SVN, it is possible (though discouraged) to commit changes to a tag
(because a tag is just a directory copy, thus technically the same as a (because a tag is just a directory copy, thus technically the same as a
@ -987,7 +987,7 @@ CONFIGURATION
------------- -------------
'git svn' stores [svn-remote] configuration information in the 'git svn' stores [svn-remote] configuration information in the
repository .git/config file. It is similar the core git repository .git/config file. It is similar the core Git
[remote] sections except 'fetch' keys do not accept glob [remote] sections except 'fetch' keys do not accept glob
arguments; but they are instead handled by the 'branches' arguments; but they are instead handled by the 'branches'
and 'tags' keys. Since some SVN repositories are oddly and 'tags' keys. Since some SVN repositories are oddly

View File

@ -242,7 +242,7 @@ $ git pull git://git..../proj.git master
In such a case, you do not want to automatically follow the other In such a case, you do not want to automatically follow the other
person's tags. person's tags.
One important aspect of git is its distributed nature, which One important aspect of Git is its distributed nature, which
largely means there is no inherent "upstream" or largely means there is no inherent "upstream" or
"downstream" in the system. On the face of it, the above "downstream" in the system. On the face of it, the above
example might seem to indicate that the tag namespace is owned example might seem to indicate that the tag namespace is owned

View File

@ -1,11 +1,11 @@
A short git tools survey A short Git tools survey
======================== ========================
Introduction Introduction
------------ ------------
Apart from git contrib/ area there are some others third-party tools Apart from Git contrib/ area there are some others third-party tools
you may want to look. you may want to look.
This document presents a brief summary of each tool and the corresponding This document presents a brief summary of each tool and the corresponding
@ -17,26 +17,26 @@ Alternative/Augmentative Porcelains
- *Cogito* (http://www.kernel.org/pub/software/scm/cogito/) - *Cogito* (http://www.kernel.org/pub/software/scm/cogito/)
Cogito is a version control system layered on top of the git tree history Cogito is a version control system layered on top of the Git tree history
storage system. It aims at seamless user interface and ease of use, storage system. It aims at seamless user interface and ease of use,
providing generally smoother user experience than the "raw" Core GIT providing generally smoother user experience than the "raw" Core Git
itself and indeed many other version control systems. itself and indeed many other version control systems.
Cogito is no longer maintained as most of its functionality Cogito is no longer maintained as most of its functionality
is now in core GIT. is now in core Git.
- *pg* (http://www.spearce.org/category/projects/scm/pg/) - *pg* (http://www.spearce.org/category/projects/scm/pg/)
pg is a shell script wrapper around GIT to help the user manage a set of pg is a shell script wrapper around Git to help the user manage a set of
patches to files. pg is somewhat like quilt or StGIT, but it does have a patches to files. pg is somewhat like quilt or StGit, but it does have a
slightly different feature set. slightly different feature set.
- *StGit* (http://www.procode.org/stgit/) - *StGit* (http://www.procode.org/stgit/)
Stacked GIT provides a quilt-like patch management functionality in the Stacked Git provides a quilt-like patch management functionality in the
GIT environment. You can easily manage your patches in the scope of GIT Git environment. You can easily manage your patches in the scope of Git
until they get merged upstream. until they get merged upstream.
@ -45,33 +45,33 @@ History Viewers
- *gitk* (shipped with git-core) - *gitk* (shipped with git-core)
gitk is a simple Tk GUI for browsing history of GIT repositories easily. gitk is a simple Tk GUI for browsing history of Git repositories easily.
- *gitview* (contrib/) - *gitview* (contrib/)
gitview is a GTK based repository browser for git gitview is a GTK based repository browser for Git
- *gitweb* (shipped with git-core) - *gitweb* (shipped with git-core)
GITweb provides full-fledged web interface for GIT repositories. Gitweb provides full-fledged web interface for Git repositories.
- *qgit* (http://digilander.libero.it/mcostalba/) - *qgit* (http://digilander.libero.it/mcostalba/)
QGit is a git/StGIT GUI viewer built on Qt/C++. QGit could be used QGit is a git/StGit GUI viewer built on Qt/C++. QGit could be used
to browse history and directory tree, view annotated files, commit to browse history and directory tree, view annotated files, commit
changes cherry picking single files or applying patches. changes cherry picking single files or applying patches.
Currently it is the fastest and most feature rich among the git Currently it is the fastest and most feature rich among the Git
viewers and commit tools. viewers and commit tools.
- *tig* (http://jonas.nitro.dk/tig/) - *tig* (http://jonas.nitro.dk/tig/)
tig by Jonas Fonseca is a simple git repository browser tig by Jonas Fonseca is a simple Git repository browser
written using ncurses. Basically, it just acts as a front-end written using ncurses. Basically, it just acts as a front-end
for git-log and git-show/git-diff. Additionally, you can also for git-log and git-show/git-diff. Additionally, you can also
use it as a pager for git commands. use it as a pager for Git commands.
Foreign SCM interface Foreign SCM interface
@ -80,20 +80,20 @@ Foreign SCM interface
- *git-svn* (shipped with git-core) - *git-svn* (shipped with git-core)
git-svn is a simple conduit for changesets between a single Subversion git-svn is a simple conduit for changesets between a single Subversion
branch and git. branch and Git.
- *quilt2git / git2quilt* (http://home-tj.org/wiki/index.php/Misc) - *quilt2git / git2quilt* (http://home-tj.org/wiki/index.php/Misc)
These utilities convert patch series in a quilt repository and commit These utilities convert patch series in a quilt repository and commit
series in git back and forth. series in Git back and forth.
- *hg-to-git* (contrib/) - *hg-to-git* (contrib/)
hg-to-git converts a Mercurial repository into a git one, and hg-to-git converts a Mercurial repository into a Git one, and
preserves the full branch history in the process. hg-to-git can preserves the full branch history in the process. hg-to-git can
also be used in an incremental way to keep the git repository also be used in an incremental way to keep the Git repository
in sync with the master Mercurial repository. in sync with the master Mercurial repository.
@ -102,14 +102,14 @@ Others
- *(h)gct* (http://www.cyd.liu.se/users/~freku045/gct/) - *(h)gct* (http://www.cyd.liu.se/users/~freku045/gct/)
Commit Tool or (h)gct is a GUI enabled commit tool for git and Commit Tool or (h)gct is a GUI enabled commit tool for Git and
Mercurial (hg). It allows the user to view diffs, select which files Mercurial (hg). It allows the user to view diffs, select which files
to committed (or ignored / reverted) write commit messages and to committed (or ignored / reverted) write commit messages and
perform the commit itself. perform the commit itself.
- *git.el* (contrib/) - *git.el* (contrib/)
This is an Emacs interface for git. The user interface is modeled on This is an Emacs interface for Git. The user interface is modeled on
pcl-cvs. It has been developed on Emacs 21 and will probably need some pcl-cvs. It has been developed on Emacs 21 and will probably need some
tweaking to work on XEmacs. tweaking to work on XEmacs.

View File

@ -82,10 +82,10 @@ OPTIONS
When these flags are specified, the object names recorded When these flags are specified, the object names recorded
for the paths are not updated. Instead, these options for the paths are not updated. Instead, these options
set and unset the "assume unchanged" bit for the set and unset the "assume unchanged" bit for the
paths. When the "assume unchanged" bit is on, git stops paths. When the "assume unchanged" bit is on, Git stops
checking the working tree files for possible checking the working tree files for possible
modifications, so you need to manually unset the bit to modifications, so you need to manually unset the bit to
tell git when you change the working tree file. This is tell Git when you change the working tree file. This is
sometimes helpful when working with a big project on a sometimes helpful when working with a big project on a
filesystem that has very slow lstat(2) system call filesystem that has very slow lstat(2) system call
(e.g. cifs). (e.g. cifs).
@ -253,18 +253,18 @@ $ git ls-files -s
Using ``assume unchanged'' bit Using ``assume unchanged'' bit
------------------------------ ------------------------------
Many operations in git depend on your filesystem to have an Many operations in Git depend on your filesystem to have an
efficient `lstat(2)` implementation, so that `st_mtime` efficient `lstat(2)` implementation, so that `st_mtime`
information for working tree files can be cheaply checked to see information for working tree files can be cheaply checked to see
if the file contents have changed from the version recorded in if the file contents have changed from the version recorded in
the index file. Unfortunately, some filesystems have the index file. Unfortunately, some filesystems have
inefficient `lstat(2)`. If your filesystem is one of them, you inefficient `lstat(2)`. If your filesystem is one of them, you
can set "assume unchanged" bit to paths you have not changed to can set "assume unchanged" bit to paths you have not changed to
cause git not to do this check. Note that setting this bit on a cause Git not to do this check. Note that setting this bit on a
path does not mean git will check the contents of the file to path does not mean Git will check the contents of the file to
see if it has changed -- it makes git to omit any checking and see if it has changed -- it makes Git to omit any checking and
assume it has *not* changed. When you make changes to working assume it has *not* changed. When you make changes to working
tree files, you have to explicitly tell git about it by dropping tree files, you have to explicitly tell Git about it by dropping
"assume unchanged" bit, either before or after you modify them. "assume unchanged" bit, either before or after you modify them.
In order to set "assume unchanged" bit, use `--assume-unchanged` In order to set "assume unchanged" bit, use `--assume-unchanged`
@ -274,7 +274,7 @@ have the "assume unchanged" bit set, use `git ls-files -v`
The command looks at `core.ignorestat` configuration variable. When The command looks at `core.ignorestat` configuration variable. When
this is true, paths updated with `git update-index paths...` and this is true, paths updated with `git update-index paths...` and
paths updated with other git commands that update both index and paths updated with other Git commands that update both index and
working tree (e.g. 'git apply --index', 'git checkout-index -u', working tree (e.g. 'git apply --index', 'git checkout-index -u',
and 'git read-tree -u') are automatically marked as "assume and 'git read-tree -u') are automatically marked as "assume
unchanged". Note that "assume unchanged" bit is *not* set if unchanged". Note that "assume unchanged" bit is *not* set if

View File

@ -73,7 +73,7 @@ in ref value. Log lines are formatted as:
Where "oldsha1" is the 40 character hexadecimal value previously Where "oldsha1" is the 40 character hexadecimal value previously
stored in <ref>, "newsha1" is the 40 character hexadecimal value of stored in <ref>, "newsha1" is the 40 character hexadecimal value of
<newvalue> and "committer" is the committer's name, email address <newvalue> and "committer" is the committer's name, email address
and date in the standard GIT committer ident format. and date in the standard Git committer ident format.
Optionally with -m: Optionally with -m:

View File

@ -14,7 +14,7 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
Invoked by 'git archive --remote' and sends a generated archive to the Invoked by 'git archive --remote' and sends a generated archive to the
other end over the git protocol. other end over the Git protocol.
This command is usually not invoked directly by the end user. The UI This command is usually not invoked directly by the end user. The UI
for the protocol is on the 'git archive' side, and the program pair for the protocol is on the 'git archive' side, and the program pair

View File

@ -26,7 +26,7 @@ OPTIONS
------- -------
--strict:: --strict::
Do not try <directory>/.git/ if <directory> is no git directory. Do not try <directory>/.git/ if <directory> is no Git directory.
--timeout=<n>:: --timeout=<n>::
Interrupt transfer after <n> seconds of inactivity. Interrupt transfer after <n> seconds of inactivity.

View File

@ -3,7 +3,7 @@ git-var(1)
NAME NAME
---- ----
git-var - Show a git logical variable git-var - Show a Git logical variable
SYNOPSIS SYNOPSIS
@ -13,13 +13,13 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
Prints a git logical variable. Prints a Git logical variable.
OPTIONS OPTIONS
------- -------
-l:: -l::
Cause the logical variables to be listed. In addition, all the Cause the logical variables to be listed. In addition, all the
variables of the git configuration file .git/config are listed variables of the Git configuration file .git/config are listed
as well. (However, the configuration variables listing functionality as well. (However, the configuration variables listing functionality
is deprecated in favor of `git config -l`.) is deprecated in favor of `git config -l`.)
@ -35,10 +35,10 @@ GIT_AUTHOR_IDENT::
The author of a piece of code. The author of a piece of code.
GIT_COMMITTER_IDENT:: GIT_COMMITTER_IDENT::
The person who put a piece of code into git. The person who put a piece of code into Git.
GIT_EDITOR:: GIT_EDITOR::
Text editor for use by git commands. The value is meant to be Text editor for use by Git commands. The value is meant to be
interpreted by the shell when it is used. Examples: `~/bin/vi`, interpreted by the shell when it is used. Examples: `~/bin/vi`,
`$SOME_ENVIRONMENT_VARIABLE`, `"C:\Program Files\Vim\gvim.exe" `$SOME_ENVIRONMENT_VARIABLE`, `"C:\Program Files\Vim\gvim.exe"
--nofork`. The order of preference is the `$GIT_EDITOR` --nofork`. The order of preference is the `$GIT_EDITOR`
@ -50,7 +50,7 @@ ifdef::git-default-editor[]
endif::git-default-editor[] endif::git-default-editor[]
GIT_PAGER:: GIT_PAGER::
Text viewer for use by git commands (e.g., 'less'). The value Text viewer for use by Git commands (e.g., 'less'). The value
is meant to be interpreted by the shell. The order of preference is meant to be interpreted by the shell. The order of preference
is the `$GIT_PAGER` environment variable, then `core.pager` is the `$GIT_PAGER` environment variable, then `core.pager`
configuration, then `$PAGER`, and then the default chosen at configuration, then `$PAGER`, and then the default chosen at

View File

@ -3,7 +3,7 @@ git-verify-pack(1)
NAME NAME
---- ----
git-verify-pack - Validate packed git archive files git-verify-pack - Validate packed Git archive files
SYNOPSIS SYNOPSIS
@ -14,7 +14,7 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
Reads given idx file for packed git archive created with the Reads given idx file for packed Git archive created with the
'git pack-objects' command and verifies idx file and the 'git pack-objects' command and verifies idx file and the
corresponding pack file. corresponding pack file.

View File

@ -21,7 +21,7 @@ OPTIONS
Print the contents of the tag object before validating it. Print the contents of the tag object before validating it.
<tag>...:: <tag>...::
SHA1 identifiers of git tag objects. SHA1 identifiers of Git tag objects.
GIT GIT
--- ---

View File

@ -3,7 +3,7 @@ git-web{litdd}browse(1)
NAME NAME
---- ----
git-web--browse - git helper script to launch a web browser git-web--browse - Git helper script to launch a web browser
SYNOPSIS SYNOPSIS
-------- --------
@ -50,7 +50,7 @@ OPTIONS
-c <conf.var>:: -c <conf.var>::
--config=<conf.var>:: --config=<conf.var>::
CONF.VAR is looked up in the git config files. If it's set, CONF.VAR is looked up in the Git config files. If it's set,
then its value specifies the browser that should be used. then its value specifies the browser that should be used.
CONFIGURATION VARIABLES CONFIGURATION VARIABLES

View File

@ -24,7 +24,7 @@ This manual page describes only the most frequently used options.
OPTIONS OPTIONS
------- -------
-p:: -p::
Show textual diffs, instead of the git internal diff Show textual diffs, instead of the Git internal diff
output format that is useful only to tell the changed output format that is useful only to tell the changed
paths and their nature of changes. paths and their nature of changes.
@ -36,7 +36,7 @@ OPTIONS
exclusive, top inclusive). exclusive, top inclusive).
-r:: -r::
Show git internal diff output, but for the whole tree, Show Git internal diff output, but for the whole tree,
not just the top level. not just the top level.
-m:: -m::

View File

@ -27,11 +27,11 @@ commands. The link:user-manual.html[Git User's Manual] has a more
in-depth introduction. in-depth introduction.
After you mastered the basic concepts, you can come back to this After you mastered the basic concepts, you can come back to this
page to learn what commands git offers. You can learn more about page to learn what commands Git offers. You can learn more about
individual git commands with "git help command". linkgit:gitcli[7] individual Git commands with "git help command". linkgit:gitcli[7]
manual page gives you an overview of the command line command syntax. manual page gives you an overview of the command line command syntax.
Formatted and hyperlinked version of the latest git documentation Formatted and hyperlinked version of the latest Git documentation
can be viewed at `http://git-htmldocs.googlecode.com/git/git.html`. can be viewed at `http://git-htmldocs.googlecode.com/git/git.html`.
ifdef::stalenotes[] ifdef::stalenotes[]
@ -39,7 +39,7 @@ ifdef::stalenotes[]
============ ============
You are reading the documentation for the latest (possibly You are reading the documentation for the latest (possibly
unreleased) version of git, that is available from 'master' unreleased) version of Git, that is available from 'master'
branch of the `git.git` repository. branch of the `git.git` repository.
Documentation for older releases are available here: Documentation for older releases are available here:
@ -355,12 +355,12 @@ endif::stalenotes[]
OPTIONS OPTIONS
------- -------
--version:: --version::
Prints the git suite version that the 'git' program came from. Prints the Git suite version that the 'git' program came from.
--help:: --help::
Prints the synopsis and a list of the most commonly used Prints the synopsis and a list of the most commonly used
commands. If the option '--all' or '-a' is given then all commands. If the option '--all' or '-a' is given then all
available commands are printed. If a git command is named this available commands are printed. If a Git command is named this
option will bring up the manual page for that command. option will bring up the manual page for that command.
+ +
Other options are available to control how the manual page is Other options are available to control how the manual page is
@ -375,22 +375,22 @@ help ...`.
'git config' (subkeys separated by dots). 'git config' (subkeys separated by dots).
--exec-path[=<path>]:: --exec-path[=<path>]::
Path to wherever your core git programs are installed. Path to wherever your core Git programs are installed.
This can also be controlled by setting the GIT_EXEC_PATH This can also be controlled by setting the GIT_EXEC_PATH
environment variable. If no path is given, 'git' will print environment variable. If no path is given, 'git' will print
the current setting and then exit. the current setting and then exit.
--html-path:: --html-path::
Print the path, without trailing slash, where git's HTML Print the path, without trailing slash, where Git's HTML
documentation is installed and exit. documentation is installed and exit.
--man-path:: --man-path::
Print the manpath (see `man(1)`) for the man pages for Print the manpath (see `man(1)`) for the man pages for
this version of git and exit. this version of Git and exit.
--info-path:: --info-path::
Print the path where the Info files documenting this Print the path where the Info files documenting this
version of git are installed and exit. version of Git are installed and exit.
-p:: -p::
--paginate:: --paginate::
@ -400,7 +400,7 @@ help ...`.
below). below).
--no-pager:: --no-pager::
Do not pipe git output into a pager. Do not pipe Git output into a pager.
--git-dir=<path>:: --git-dir=<path>::
Set the path to the repository. This can also be controlled by Set the path to the repository. This can also be controlled by
@ -416,7 +416,7 @@ help ...`.
more detailed discussion). more detailed discussion).
--namespace=<path>:: --namespace=<path>::
Set the git namespace. See linkgit:gitnamespaces[7] for more Set the Git namespace. See linkgit:gitnamespaces[7] for more
details. Equivalent to setting the `GIT_NAMESPACE` environment details. Equivalent to setting the `GIT_NAMESPACE` environment
variable. variable.
@ -426,7 +426,7 @@ help ...`.
directory. directory.
--no-replace-objects:: --no-replace-objects::
Do not use replacement refs to replace git objects. See Do not use replacement refs to replace Git objects. See
linkgit:git-replace[1] for more information. linkgit:git-replace[1] for more information.
--literal-pathspecs:: --literal-pathspecs::
@ -438,7 +438,7 @@ help ...`.
GIT COMMANDS GIT COMMANDS
------------ ------------
We divide git into high level ("porcelain") commands and low level We divide Git into high level ("porcelain") commands and low level
("plumbing") commands. ("plumbing") commands.
High-level commands (porcelain) High-level commands (porcelain)
@ -475,7 +475,7 @@ include::cmds-foreignscminterface.txt[]
Low-level commands (plumbing) Low-level commands (plumbing)
----------------------------- -----------------------------
Although git includes its Although Git includes its
own porcelain layer, its low-level commands are sufficient to support own porcelain layer, its low-level commands are sufficient to support
development of alternative porcelains. Developers of such porcelains development of alternative porcelains. Developers of such porcelains
might start by reading about linkgit:git-update-index[1] and might start by reading about linkgit:git-update-index[1] and
@ -596,7 +596,7 @@ Identifier Terminology
Symbolic Identifiers Symbolic Identifiers
-------------------- --------------------
Any git command accepting any <object> can also use the following Any Git command accepting any <object> can also use the following
symbolic notation: symbolic notation:
HEAD:: HEAD::
@ -632,13 +632,13 @@ Please see linkgit:gitglossary[7].
Environment Variables Environment Variables
--------------------- ---------------------
Various git commands use the following environment variables: Various Git commands use the following environment variables:
The git Repository The Git Repository
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
These environment variables apply to 'all' core git commands. Nb: it These environment variables apply to 'all' core Git commands. Nb: it
is worth noting that they may be used/overridden by SCMS sitting above is worth noting that they may be used/overridden by SCMS sitting above
git so take care if using Cogito etc. Git so take care if using Cogito etc.
'GIT_INDEX_FILE':: 'GIT_INDEX_FILE'::
This environment allows the specification of an alternate This environment allows the specification of an alternate
@ -652,10 +652,10 @@ git so take care if using Cogito etc.
directory is used. directory is used.
'GIT_ALTERNATE_OBJECT_DIRECTORIES':: 'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
Due to the immutable nature of git objects, old objects can be Due to the immutable nature of Git objects, old objects can be
archived into shared, read-only directories. This variable archived into shared, read-only directories. This variable
specifies a ":" separated (on Windows ";" separated) list specifies a ":" separated (on Windows ";" separated) list
of git object directories which can be used to search for git of Git object directories which can be used to search for Git
objects. New objects will not be written to these directories. objects. New objects will not be written to these directories.
'GIT_DIR':: 'GIT_DIR'::
@ -672,12 +672,12 @@ git so take care if using Cogito etc.
option and the core.worktree configuration variable. option and the core.worktree configuration variable.
'GIT_NAMESPACE':: 'GIT_NAMESPACE'::
Set the git namespace; see linkgit:gitnamespaces[7] for details. Set the Git namespace; see linkgit:gitnamespaces[7] for details.
The '--namespace' command-line option also sets this value. The '--namespace' command-line option also sets this value.
'GIT_CEILING_DIRECTORIES':: 'GIT_CEILING_DIRECTORIES'::
This should be a colon-separated list of absolute paths. This should be a colon-separated list of absolute paths.
If set, it is a list of directories that git should not chdir If set, it is a list of directories that Git should not chdir
up into while looking for a repository directory. up into while looking for a repository directory.
It will not exclude the current working directory or It will not exclude the current working directory or
a GIT_DIR set on the command line or in the environment. a GIT_DIR set on the command line or in the environment.
@ -685,15 +685,15 @@ git so take care if using Cogito etc.
'GIT_DISCOVERY_ACROSS_FILESYSTEM':: 'GIT_DISCOVERY_ACROSS_FILESYSTEM'::
When run in a directory that does not have ".git" repository When run in a directory that does not have ".git" repository
directory, git tries to find such a directory in the parent directory, Git tries to find such a directory in the parent
directories to find the top of the working tree, but by default it directories to find the top of the working tree, but by default it
does not cross filesystem boundaries. This environment variable does not cross filesystem boundaries. This environment variable
can be set to true to tell git not to stop at filesystem can be set to true to tell Git not to stop at filesystem
boundaries. Like 'GIT_CEILING_DIRECTORIES', this will not affect boundaries. Like 'GIT_CEILING_DIRECTORIES', this will not affect
an explicit repository directory set via 'GIT_DIR' or on the an explicit repository directory set via 'GIT_DIR' or on the
command line. command line.
git Commits Git Commits
~~~~~~~~~~~ ~~~~~~~~~~~
'GIT_AUTHOR_NAME':: 'GIT_AUTHOR_NAME'::
'GIT_AUTHOR_EMAIL':: 'GIT_AUTHOR_EMAIL'::
@ -704,13 +704,13 @@ git Commits
'EMAIL':: 'EMAIL'::
see linkgit:git-commit-tree[1] see linkgit:git-commit-tree[1]
git Diffs Git Diffs
~~~~~~~~~ ~~~~~~~~~
'GIT_DIFF_OPTS':: 'GIT_DIFF_OPTS'::
Only valid setting is "--unified=??" or "-u??" to set the Only valid setting is "--unified=??" or "-u??" to set the
number of context lines shown when a unified diff is created. number of context lines shown when a unified diff is created.
This takes precedence over any "-U" or "--unified" option This takes precedence over any "-U" or "--unified" option
value passed on the git diff command line. value passed on the Git diff command line.
'GIT_EXTERNAL_DIFF':: 'GIT_EXTERNAL_DIFF'::
When the environment variable 'GIT_EXTERNAL_DIFF' is set, the When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
@ -745,13 +745,13 @@ other
'GIT_PAGER':: 'GIT_PAGER'::
This environment variable overrides `$PAGER`. If it is set This environment variable overrides `$PAGER`. If it is set
to an empty string or to the value "cat", git will not launch to an empty string or to the value "cat", Git will not launch
a pager. See also the `core.pager` option in a pager. See also the `core.pager` option in
linkgit:git-config[1]. linkgit:git-config[1].
'GIT_EDITOR':: 'GIT_EDITOR'::
This environment variable overrides `$EDITOR` and `$VISUAL`. This environment variable overrides `$EDITOR` and `$VISUAL`.
It is used by several git commands when, on interactive mode, It is used by several Git commands when, on interactive mode,
an editor is to be launched. See also linkgit:git-var[1] an editor is to be launched. See also linkgit:git-var[1]
and the `core.editor` option in linkgit:git-config[1]. and the `core.editor` option in linkgit:git-config[1].
@ -772,7 +772,7 @@ personal `.ssh/config` file. Please consult your ssh documentation
for further details. for further details.
'GIT_ASKPASS':: 'GIT_ASKPASS'::
If this environment variable is set, then git commands which need to If this environment variable is set, then Git commands which need to
acquire passwords or passphrases (e.g. for HTTP or IMAP authentication) acquire passwords or passphrases (e.g. for HTTP or IMAP authentication)
will call this program with a suitable prompt as command line argument will call this program with a suitable prompt as command line argument
and read the password from its STDOUT. See also the 'core.askpass' and read the password from its STDOUT. See also the 'core.askpass'
@ -793,30 +793,30 @@ for further details.
after each commit-oriented record have been flushed. If this after each commit-oriented record have been flushed. If this
variable is set to "0", the output of these commands will be done variable is set to "0", the output of these commands will be done
using completely buffered I/O. If this environment variable is using completely buffered I/O. If this environment variable is
not set, git will choose buffered or record-oriented flushing not set, Git will choose buffered or record-oriented flushing
based on whether stdout appears to be redirected to a file or not. based on whether stdout appears to be redirected to a file or not.
'GIT_TRACE':: 'GIT_TRACE'::
If this variable is set to "1", "2" or "true" (comparison If this variable is set to "1", "2" or "true" (comparison
is case insensitive), git will print `trace:` messages on is case insensitive), Git will print `trace:` messages on
stderr telling about alias expansion, built-in command stderr telling about alias expansion, built-in command
execution and external command execution. execution and external command execution.
If this variable is set to an integer value greater than 1 If this variable is set to an integer value greater than 1
and lower than 10 (strictly) then git will interpret this and lower than 10 (strictly) then Git will interpret this
value as an open file descriptor and will try to write the value as an open file descriptor and will try to write the
trace messages into this file descriptor. trace messages into this file descriptor.
Alternatively, if this variable is set to an absolute path Alternatively, if this variable is set to an absolute path
(starting with a '/' character), git will interpret this (starting with a '/' character), Git will interpret this
as a file path and will try to write the trace messages as a file path and will try to write the trace messages
into it. into it.
GIT_LITERAL_PATHSPECS:: GIT_LITERAL_PATHSPECS::
Setting this variable to `1` will cause git to treat all Setting this variable to `1` will cause Git to treat all
pathspecs literally, rather than as glob patterns. For example, pathspecs literally, rather than as glob patterns. For example,
running `GIT_LITERAL_PATHSPECS=1 git log -- '*.c'` will search running `GIT_LITERAL_PATHSPECS=1 git log -- '*.c'` will search
for commits that touch the path `*.c`, not any paths that the for commits that touch the path `*.c`, not any paths that the
glob `*.c` matches. You might want this if you are feeding glob `*.c` matches. You might want this if you are feeding
literal paths to git (e.g., paths previously given to you by literal paths to Git (e.g., paths previously given to you by
`git ls-tree`, `--raw` diff output, etc). `git ls-tree`, `--raw` diff output, etc).
@ -824,10 +824,10 @@ Discussion[[Discussion]]
------------------------ ------------------------
More detail on the following is available from the More detail on the following is available from the
link:user-manual.html#git-concepts[git concepts chapter of the link:user-manual.html#git-concepts[Git concepts chapter of the
user-manual] and linkgit:gitcore-tutorial[7]. user-manual] and linkgit:gitcore-tutorial[7].
A git project normally consists of a working directory with a ".git" A Git project normally consists of a working directory with a ".git"
subdirectory at the top level. The .git directory contains, among other subdirectory at the top level. The .git directory contains, among other
things, a compressed object database representing the complete history things, a compressed object database representing the complete history
of the project, an "index" file which links that history to the current of the project, an "index" file which links that history to the current
@ -877,12 +877,12 @@ FURTHER DOCUMENTATION
--------------------- ---------------------
See the references in the "description" section to get started See the references in the "description" section to get started
using git. The following is probably more detail than necessary using Git. The following is probably more detail than necessary
for a first-time user. for a first-time user.
The link:user-manual.html#git-concepts[git concepts chapter of the The link:user-manual.html#git-concepts[Git concepts chapter of the
user-manual] and linkgit:gitcore-tutorial[7] both provide user-manual] and linkgit:gitcore-tutorial[7] both provide
introductions to the underlying git architecture. introductions to the underlying Git architecture.
See linkgit:gitworkflows[7] for an overview of recommended workflows. See linkgit:gitworkflows[7] for an overview of recommended workflows.
@ -890,7 +890,7 @@ See also the link:howto-index.html[howto] documents for some useful
examples. examples.
The internals are documented in the The internals are documented in the
link:technical/api-index.html[GIT API documentation]. link:technical/api-index.html[Git API documentation].
Users migrating from CVS may also want to Users migrating from CVS may also want to
read linkgit:gitcvs-migration[7]. read linkgit:gitcvs-migration[7].
@ -899,7 +899,7 @@ read linkgit:gitcvs-migration[7].
Authors Authors
------- -------
Git was started by Linus Torvalds, and is currently maintained by Junio Git was started by Linus Torvalds, and is currently maintained by Junio
C Hamano. Numerous contributions have come from the git mailing list C Hamano. Numerous contributions have come from the Git mailing list
<git@vger.kernel.org>. http://www.ohloh.net/p/git/contributors/summary <git@vger.kernel.org>. http://www.ohloh.net/p/git/contributors/summary
gives you a more complete list of contributors. gives you a more complete list of contributors.

View File

@ -58,7 +58,7 @@ attribute. The rules how the pattern matches paths are the
same as in `.gitignore` files; see linkgit:gitignore[5]. same as in `.gitignore` files; see linkgit:gitignore[5].
Unlike `.gitignore`, negative patterns are forbidden. Unlike `.gitignore`, negative patterns are forbidden.
When deciding what attributes are assigned to a path, git When deciding what attributes are assigned to a path, Git
consults `$GIT_DIR/info/attributes` file (which has the highest consults `$GIT_DIR/info/attributes` file (which has the highest
precedence), `.gitattributes` file in the same directory as the precedence), `.gitattributes` file in the same directory as the
path in question, and its parent directories up to the toplevel of the path in question, and its parent directories up to the toplevel of the
@ -94,7 +94,7 @@ the name of the attribute prefixed with an exclamation point `!`.
EFFECTS EFFECTS
------- -------
Certain operations by git can be influenced by assigning Certain operations by Git can be influenced by assigning
particular attributes to a path. Currently, the following particular attributes to a path. Currently, the following
operations are attributes-aware. operations are attributes-aware.
@ -104,7 +104,7 @@ Checking-out and checking-in
These attributes affect how the contents stored in the These attributes affect how the contents stored in the
repository are copied to the working tree files when commands repository are copied to the working tree files when commands
such as 'git checkout' and 'git merge' run. They also affect how such as 'git checkout' and 'git merge' run. They also affect how
git stores the contents you prepare in the working tree in the Git stores the contents you prepare in the working tree in the
repository upon 'git add' and 'git commit'. repository upon 'git add' and 'git commit'.
`text` `text`
@ -124,22 +124,22 @@ Set::
Unset:: Unset::
Unsetting the `text` attribute on a path tells git not to Unsetting the `text` attribute on a path tells Git not to
attempt any end-of-line conversion upon checkin or checkout. attempt any end-of-line conversion upon checkin or checkout.
Set to string value "auto":: Set to string value "auto"::
When `text` is set to "auto", the path is marked for automatic When `text` is set to "auto", the path is marked for automatic
end-of-line normalization. If git decides that the content is end-of-line normalization. If Git decides that the content is
text, its line endings are normalized to LF on checkin. text, its line endings are normalized to LF on checkin.
Unspecified:: Unspecified::
If the `text` attribute is unspecified, git uses the If the `text` attribute is unspecified, Git uses the
`core.autocrlf` configuration variable to determine if the `core.autocrlf` configuration variable to determine if the
file should be converted. file should be converted.
Any other value causes git to act as if `text` has been left Any other value causes Git to act as if `text` has been left
unspecified. unspecified.
`eol` `eol`
@ -151,13 +151,13 @@ content checks, effectively setting the `text` attribute.
Set to string value "crlf":: Set to string value "crlf"::
This setting forces git to normalize line endings for this This setting forces Git to normalize line endings for this
file on checkin and convert them to CRLF when the file is file on checkin and convert them to CRLF when the file is
checked out. checked out.
Set to string value "lf":: Set to string value "lf"::
This setting forces git to normalize line endings to LF on This setting forces Git to normalize line endings to LF on
checkin and prevents conversion to CRLF when the file is checkin and prevents conversion to CRLF when the file is
checked out. checked out.
@ -176,11 +176,11 @@ crlf=input eol=lf
End-of-line conversion End-of-line conversion
^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^
While git normally leaves file contents alone, it can be configured to While Git normally leaves file contents alone, it can be configured to
normalize line endings to LF in the repository and, optionally, to normalize line endings to LF in the repository and, optionally, to
convert them to CRLF when files are checked out. convert them to CRLF when files are checked out.
Here is an example that will make git normalize .txt, .vcproj and .sh Here is an example that will make Git normalize .txt, .vcproj and .sh
files, ensure that .vcproj files have CRLF and .sh files have LF in files, ensure that .vcproj files have CRLF and .sh files have LF in
the working directory, and prevent .jpg files from being normalized the working directory, and prevent .jpg files from being normalized
regardless of their content. regardless of their content.
@ -194,7 +194,7 @@ regardless of their content.
Other source code management systems normalize all text files in their Other source code management systems normalize all text files in their
repositories, and there are two ways to enable similar automatic repositories, and there are two ways to enable similar automatic
normalization in git. normalization in Git.
If you simply want to have CRLF line endings in your working directory If you simply want to have CRLF line endings in your working directory
regardless of the repository you are working with, you can set the regardless of the repository you are working with, you can set the
@ -219,9 +219,9 @@ attribute to "auto" for _all_ files.
* text=auto * text=auto
------------------------ ------------------------
This ensures that all files that git considers to be text will have This ensures that all files that Git considers to be text will have
normalized (LF) line endings in the repository. The `core.eol` normalized (LF) line endings in the repository. The `core.eol`
configuration variable controls which line endings git will use for configuration variable controls which line endings Git will use for
normalized files in your working directory; the default is to use the normalized files in your working directory; the default is to use the
native line ending for your platform, or CRLF if `core.autocrlf` is native line ending for your platform, or CRLF if `core.autocrlf` is
set. set.
@ -234,7 +234,7 @@ directory:
------------------------------------------------- -------------------------------------------------
$ echo "* text=auto" >>.gitattributes $ echo "* text=auto" >>.gitattributes
$ rm .git/index # Remove the index to force git to $ rm .git/index # Remove the index to force Git to
$ git reset # re-scan the working directory $ git reset # re-scan the working directory
$ git status # Show files that will be normalized $ git status # Show files that will be normalized
$ git add -u $ git add -u
@ -249,17 +249,17 @@ unset their `text` attribute before running 'git add -u'.
manual.pdf -text manual.pdf -text
------------------------ ------------------------
Conversely, text files that git does not detect can have normalization Conversely, text files that Git does not detect can have normalization
enabled manually. enabled manually.
------------------------ ------------------------
weirdchars.txt text weirdchars.txt text
------------------------ ------------------------
If `core.safecrlf` is set to "true" or "warn", git verifies if If `core.safecrlf` is set to "true" or "warn", Git verifies if
the conversion is reversible for the current setting of the conversion is reversible for the current setting of
`core.autocrlf`. For "true", git rejects irreversible `core.autocrlf`. For "true", Git rejects irreversible
conversions; for "warn", git only prints a warning but accepts conversions; for "warn", Git only prints a warning but accepts
an irreversible conversion. The safety triggers to prevent such an irreversible conversion. The safety triggers to prevent such
a conversion done to the files in the work tree, but there are a a conversion done to the files in the work tree, but there are a
few exceptions. Even though... few exceptions. Even though...
@ -280,7 +280,7 @@ few exceptions. Even though...
`ident` `ident`
^^^^^^^ ^^^^^^^
When the attribute `ident` is set for a path, git replaces When the attribute `ident` is set for a path, Git replaces
`$Id$` in the blob object with `$Id:`, followed by the `$Id$` in the blob object with `$Id:`, followed by the
40-character hexadecimal blob object name, followed by a dollar 40-character hexadecimal blob object name, followed by a dollar
sign `$` upon checkout. Any byte sequence that begins with sign `$` upon checkout. Any byte sequence that begins with
@ -311,7 +311,7 @@ the appropriate filter program, the project should still be usable.
Another use of the content filtering is to store the content that cannot Another use of the content filtering is to store the content that cannot
be directly used in the repository (e.g. a UUID that refers to the true be directly used in the repository (e.g. a UUID that refers to the true
content stored outside git, or an encrypted content) and turn it into a content stored outside Git, or an encrypted content) and turn it into a
usable form upon checkout (e.g. download the external content, or decrypt usable form upon checkout (e.g. download the external content, or decrypt
the encrypted content). the encrypted content).
@ -397,7 +397,7 @@ clean/smudge filter or text/eol/ident attributes, merging anything
where the attribute is not in place would normally cause merge where the attribute is not in place would normally cause merge
conflicts. conflicts.
To prevent these unnecessary merge conflicts, git can be told to run a To prevent these unnecessary merge conflicts, Git can be told to run a
virtual check-out and check-in of all three stages of a file when virtual check-out and check-in of all three stages of a file when
resolving a three-way merge by setting the `merge.renormalize` resolving a three-way merge by setting the `merge.renormalize`
configuration variable. This prevents changes caused by check-in configuration variable. This prevents changes caused by check-in
@ -417,11 +417,11 @@ Generating diff text
`diff` `diff`
^^^^^^ ^^^^^^
The attribute `diff` affects how 'git' generates diffs for particular The attribute `diff` affects how Git generates diffs for particular
files. It can tell git whether to generate a textual patch for the path files. It can tell Git whether to generate a textual patch for the path
or to treat the path as a binary file. It can also affect what line is or to treat the path as a binary file. It can also affect what line is
shown on the hunk header `@@ -k,l +n,m @@` line, tell git to use an shown on the hunk header `@@ -k,l +n,m @@` line, tell Git to use an
external command to generate the diff, or ask git to convert binary external command to generate the diff, or ask Git to convert binary
files to a text format before generating the diff. files to a text format before generating the diff.
Set:: Set::
@ -449,7 +449,7 @@ String::
specify one or more options, as described in the following specify one or more options, as described in the following
section. The options for the diff driver "foo" are defined section. The options for the diff driver "foo" are defined
by the configuration variables in the "diff.foo" section of the by the configuration variables in the "diff.foo" section of the
git config file. Git config file.
Defining an external diff driver Defining an external diff driver
@ -467,7 +467,7 @@ To define an external diff driver `jcdiff`, add a section to your
command = j-c-diff command = j-c-diff
---------------------------------------------------------------- ----------------------------------------------------------------
When git needs to show you a diff for the path with `diff` When Git needs to show you a diff for the path with `diff`
attribute set to `jcdiff`, it calls the command you specified attribute set to `jcdiff`, it calls the command you specified
with the above configuration, i.e. `j-c-diff`, with 7 with the above configuration, i.e. `j-c-diff`, with 7
parameters, just like `GIT_EXTERNAL_DIFF` program is called. parameters, just like `GIT_EXTERNAL_DIFF` program is called.
@ -606,7 +606,7 @@ should generate it separately and send it as a comment _in
addition to_ the usual binary diff that you might send. addition to_ the usual binary diff that you might send.
Because text conversion can be slow, especially when doing a Because text conversion can be slow, especially when doing a
large number of them with `git log -p`, git provides a mechanism large number of them with `git log -p`, Git provides a mechanism
to cache the output and use it in future diffs. To enable to cache the output and use it in future diffs. To enable
caching, set the "cachetextconv" variable in your diff driver's caching, set the "cachetextconv" variable in your diff driver's
config. For example: config. For example:
@ -619,7 +619,7 @@ config. For example:
This will cache the result of running "exif" on each blob This will cache the result of running "exif" on each blob
indefinitely. If you change the textconv config variable for a indefinitely. If you change the textconv config variable for a
diff driver, git will automatically invalidate the cache entries diff driver, Git will automatically invalidate the cache entries
and re-run the textconv filter. If you want to invalidate the and re-run the textconv filter. If you want to invalidate the
cache manually (e.g., because your version of "exif" was updated cache manually (e.g., because your version of "exif" was updated
and now produces better output), you can remove the cache and now produces better output), you can remove the cache
@ -640,7 +640,7 @@ output to resemble unified diff. You are free to locate and report
changes in the most appropriate way for your data format. changes in the most appropriate way for your data format.
A textconv, by comparison, is much more limiting. You provide a A textconv, by comparison, is much more limiting. You provide a
transformation of the data into a line-oriented text format, and git transformation of the data into a line-oriented text format, and Git
uses its regular diff tools to generate the output. There are several uses its regular diff tools to generate the output. There are several
advantages to choosing this method: advantages to choosing this method:
@ -650,7 +650,7 @@ advantages to choosing this method:
odt2txt). odt2txt).
2. Git diff features. By performing only the transformation step 2. Git diff features. By performing only the transformation step
yourself, you can still utilize many of git's diff features, yourself, you can still utilize many of Git's diff features,
including colorization, word-diff, and combined diffs for merges. including colorization, word-diff, and combined diffs for merges.
3. Caching. Textconv caching can speed up repeated diffs, such as those 3. Caching. Textconv caching can speed up repeated diffs, such as those
@ -675,7 +675,7 @@ attribute in the `.gitattributes` file:
*.ps -diff *.ps -diff
------------------------ ------------------------
This will cause git to generate `Binary files differ` (or a binary This will cause Git to generate `Binary files differ` (or a binary
patch, if binary patches are enabled) instead of a regular diff. patch, if binary patches are enabled) instead of a regular diff.
However, one may also want to specify other diff driver attributes. For However, one may also want to specify other diff driver attributes. For
@ -831,7 +831,7 @@ control per path.
Set:: Set::
Notice all types of potential whitespace errors known to git. Notice all types of potential whitespace errors known to Git.
The tab width is taken from the value of the `core.whitespace` The tab width is taken from the value of the `core.whitespace`
configuration variable. configuration variable.
@ -863,7 +863,7 @@ archive files.
`export-subst` `export-subst`
^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
If the attribute `export-subst` is set for a file then git will expand If the attribute `export-subst` is set for a file then Git will expand
several placeholders when adding this file to an archive. The several placeholders when adding this file to an archive. The
expansion depends on the availability of a commit ID, i.e., if expansion depends on the availability of a commit ID, i.e., if
linkgit:git-archive[1] has been given a tree instead of a commit or a linkgit:git-archive[1] has been given a tree instead of a commit or a
@ -961,7 +961,7 @@ abc -foo -bar
the attributes given to path `t/abc` are computed as follows: the attributes given to path `t/abc` are computed as follows:
1. By examining `t/.gitattributes` (which is in the same 1. By examining `t/.gitattributes` (which is in the same
directory as the path in question), git finds that the first directory as the path in question), Git finds that the first
line matches. `merge` attribute is set. It also finds that line matches. `merge` attribute is set. It also finds that
the second line matches, and attributes `foo` and `bar` the second line matches, and attributes `foo` and `bar`
are unset. are unset.

View File

@ -3,7 +3,7 @@ gitcli(7)
NAME NAME
---- ----
gitcli - git command line interface and conventions gitcli - Git command line interface and conventions
SYNOPSIS SYNOPSIS
-------- --------
@ -13,7 +13,7 @@ gitcli
DESCRIPTION DESCRIPTION
----------- -----------
This manual describes the convention used throughout git CLI. This manual describes the convention used throughout Git CLI.
Many commands take revisions (most often "commits", but sometimes Many commands take revisions (most often "commits", but sometimes
"tree-ish", depending on the context and command) and paths as their "tree-ish", depending on the context and command) and paths as their
@ -32,7 +32,7 @@ arguments. Here are the rules:
between the HEAD commit and the work tree as a whole". You can say between the HEAD commit and the work tree as a whole". You can say
`git diff HEAD --` to ask for the latter. `git diff HEAD --` to ask for the latter.
* Without disambiguating `--`, git makes a reasonable guess, but errors * Without disambiguating `--`, Git makes a reasonable guess, but errors
out and asking you to disambiguate when ambiguous. E.g. if you have a out and asking you to disambiguate when ambiguous. E.g. if you have a
file called HEAD in your work tree, `git diff HEAD` is ambiguous, and file called HEAD in your work tree, `git diff HEAD` is ambiguous, and
you have to say either `git diff HEAD --` or `git diff -- HEAD` to you have to say either `git diff HEAD --` or `git diff -- HEAD` to
@ -60,9 +60,9 @@ see `hello.c` in your working tree with the former, but with the latter
you will. you will.
Here are the rules regarding the "flags" that you should follow when you are Here are the rules regarding the "flags" that you should follow when you are
scripting git: scripting Git:
* it's preferred to use the non dashed form of git commands, which means that * it's preferred to use the non dashed form of Git commands, which means that
you should prefer `git foo` to `git-foo`. you should prefer `git foo` to `git-foo`.
* splitting short options to separate words (prefer `git foo -a -b` * splitting short options to separate words (prefer `git foo -a -b`
@ -90,7 +90,7 @@ scripting git:
ENHANCED OPTION PARSER ENHANCED OPTION PARSER
---------------------- ----------------------
From the git 1.5.4 series and further, many git commands (not all of them at the From the Git 1.5.4 series and further, many Git commands (not all of them at the
time of the writing though) come with an enhanced option parser. time of the writing though) come with an enhanced option parser.
Here is a list of the facilities provided by this option parser. Here is a list of the facilities provided by this option parser.
@ -117,7 +117,7 @@ usage: git describe [options] <committish>*
--------------------------------------------- ---------------------------------------------
--help-all:: --help-all::
Some git commands take options that are only used for plumbing or that Some Git commands take options that are only used for plumbing or that
are deprecated, and such options are hidden from the default usage. This are deprecated, and such options are hidden from the default usage. This
option gives the full list of options. option gives the full list of options.

View File

@ -3,7 +3,7 @@ gitcore-tutorial(7)
NAME NAME
---- ----
gitcore-tutorial - A git core tutorial for developers gitcore-tutorial - A Git core tutorial for developers
SYNOPSIS SYNOPSIS
-------- --------
@ -12,17 +12,17 @@ git *
DESCRIPTION DESCRIPTION
----------- -----------
This tutorial explains how to use the "core" git commands to set up and This tutorial explains how to use the "core" Git commands to set up and
work with a git repository. work with a Git repository.
If you just need to use git as a revision control system you may prefer If you just need to use Git as a revision control system you may prefer
to start with "A Tutorial Introduction to GIT" (linkgit:gittutorial[7]) or to start with "A Tutorial Introduction to Git" (linkgit:gittutorial[7]) or
link:user-manual.html[the GIT User Manual]. link:user-manual.html[the Git User Manual].
However, an understanding of these low-level tools can be helpful if However, an understanding of these low-level tools can be helpful if
you want to understand git's internals. you want to understand Git's internals.
The core git is often called "plumbing", with the prettier user The core Git is often called "plumbing", with the prettier user
interfaces on top of it called "porcelain". You may not want to use the interfaces on top of it called "porcelain". You may not want to use the
plumbing directly very often, but it can be good to know what the plumbing directly very often, but it can be good to know what the
plumbing does for when the porcelain isn't flushing. plumbing does for when the porcelain isn't flushing.
@ -40,19 +40,19 @@ Deeper technical details are often marked as Notes, which you can
skip on your first reading. skip on your first reading.
Creating a git repository Creating a Git repository
------------------------- -------------------------
Creating a new git repository couldn't be easier: all git repositories start Creating a new Git repository couldn't be easier: all Git repositories start
out empty, and the only thing you need to do is find yourself a out empty, and the only thing you need to do is find yourself a
subdirectory that you want to use as a working tree - either an empty subdirectory that you want to use as a working tree - either an empty
one for a totally new project, or an existing working tree that you want one for a totally new project, or an existing working tree that you want
to import into git. to import into Git.
For our first example, we're going to start a totally new repository from For our first example, we're going to start a totally new repository from
scratch, with no pre-existing files, and we'll call it 'git-tutorial'. scratch, with no pre-existing files, and we'll call it 'git-tutorial'.
To start up, create a subdirectory for it, change into that To start up, create a subdirectory for it, change into that
subdirectory, and initialize the git infrastructure with 'git init': subdirectory, and initialize the Git infrastructure with 'git init':
------------------------------------------------ ------------------------------------------------
$ mkdir git-tutorial $ mkdir git-tutorial
@ -60,13 +60,13 @@ $ cd git-tutorial
$ git init $ git init
------------------------------------------------ ------------------------------------------------
to which git will reply to which Git will reply
---------------- ----------------
Initialized empty Git repository in .git/ Initialized empty Git repository in .git/
---------------- ----------------
which is just git's way of saying that you haven't been doing anything which is just Git's way of saying that you haven't been doing anything
strange, and that it will have created a local `.git` directory setup for strange, and that it will have created a local `.git` directory setup for
your new project. You will now have a `.git` directory, and you can your new project. You will now have a `.git` directory, and you can
inspect that with 'ls'. For your new empty project, it should show you inspect that with 'ls'. For your new empty project, it should show you
@ -102,7 +102,7 @@ start out expecting to work on the `master` branch.
However, this is only a convention, and you can name your branches However, this is only a convention, and you can name your branches
anything you want, and don't have to ever even 'have' a `master` anything you want, and don't have to ever even 'have' a `master`
branch. A number of the git tools will assume that `.git/HEAD` is branch. A number of the Git tools will assume that `.git/HEAD` is
valid, though. valid, though.
[NOTE] [NOTE]
@ -119,18 +119,18 @@ populating your tree.
An advanced user may want to take a look at linkgit:gitrepository-layout[5] An advanced user may want to take a look at linkgit:gitrepository-layout[5]
after finishing this tutorial. after finishing this tutorial.
You have now created your first git repository. Of course, since it's You have now created your first Git repository. Of course, since it's
empty, that's not very useful, so let's start populating it with data. empty, that's not very useful, so let's start populating it with data.
Populating a git repository Populating a Git repository
--------------------------- ---------------------------
We'll keep this simple and stupid, so we'll start off with populating a We'll keep this simple and stupid, so we'll start off with populating a
few trivial files just to get a feel for it. few trivial files just to get a feel for it.
Start off with just creating any random files that you want to maintain Start off with just creating any random files that you want to maintain
in your git repository. We'll start off with a few bad examples, just to in your Git repository. We'll start off with a few bad examples, just to
get a feel for how this works: get a feel for how this works:
------------------------------------------------ ------------------------------------------------
@ -146,7 +146,7 @@ but to actually check in your hard work, you will have to go through two steps:
- commit that index file as an object. - commit that index file as an object.
The first step is trivial: when you want to tell git about any changes The first step is trivial: when you want to tell Git about any changes
to your working tree, you use the 'git update-index' program. That to your working tree, you use the 'git update-index' program. That
program normally just takes a list of filenames you want to update, but program normally just takes a list of filenames you want to update, but
to avoid trivial mistakes, it refuses to add new entries to the index to avoid trivial mistakes, it refuses to add new entries to the index
@ -160,10 +160,10 @@ So to populate the index with the two files you just created, you can do
$ git update-index --add hello example $ git update-index --add hello example
------------------------------------------------ ------------------------------------------------
and you have now told git to track those two files. and you have now told Git to track those two files.
In fact, as you did that, if you now look into your object directory, In fact, as you did that, if you now look into your object directory,
you'll notice that git will have added two new objects to the object you'll notice that Git will have added two new objects to the object
database. If you did exactly the steps above, you should now be able to do database. If you did exactly the steps above, you should now be able to do
@ -189,7 +189,7 @@ $ git cat-file -t 557db03de997c86a4a028e1ebd3a1ceb225be238
---------------- ----------------
where the `-t` tells 'git cat-file' to tell you what the "type" of the where the `-t` tells 'git cat-file' to tell you what the "type" of the
object is. git will tell you that you have a "blob" object (i.e., just a object is. Git will tell you that you have a "blob" object (i.e., just a
regular file), and you can see the contents with regular file), and you can see the contents with
---------------- ----------------
@ -214,28 +214,28 @@ Anyway, as we mentioned previously, you normally never actually take a
look at the objects themselves, and typing long 40-character hex look at the objects themselves, and typing long 40-character hex
names is not something you'd normally want to do. The above digression names is not something you'd normally want to do. The above digression
was just to show that 'git update-index' did something magical, and was just to show that 'git update-index' did something magical, and
actually saved away the contents of your files into the git object actually saved away the contents of your files into the Git object
database. database.
Updating the index did something else too: it created a `.git/index` Updating the index did something else too: it created a `.git/index`
file. This is the index that describes your current working tree, and file. This is the index that describes your current working tree, and
something you should be very aware of. Again, you normally never worry something you should be very aware of. Again, you normally never worry
about the index file itself, but you should be aware of the fact that about the index file itself, but you should be aware of the fact that
you have not actually really "checked in" your files into git so far, you have not actually really "checked in" your files into Git so far,
you've only *told* git about them. you've only *told* Git about them.
However, since git knows about them, you can now start using some of the However, since Git knows about them, you can now start using some of the
most basic git commands to manipulate the files or look at their status. most basic Git commands to manipulate the files or look at their status.
In particular, let's not even check in the two files into git yet, we'll In particular, let's not even check in the two files into Git yet, we'll
start off by adding another line to `hello` first: start off by adding another line to `hello` first:
------------------------------------------------ ------------------------------------------------
$ echo "It's a new day for git" >>hello $ echo "It's a new day for git" >>hello
------------------------------------------------ ------------------------------------------------
and you can now, since you told git about the previous state of `hello`, ask and you can now, since you told Git about the previous state of `hello`, ask
git what has changed in the tree compared to your old index, using the Git what has changed in the tree compared to your old index, using the
'git diff-files' command: 'git diff-files' command:
------------ ------------
@ -282,11 +282,11 @@ index 557db03..263414f 100644
------------ ------------
Committing git state Committing Git state
-------------------- --------------------
Now, we want to go to the next stage in git, which is to take the files Now, we want to go to the next stage in Git, which is to take the files
that git knows about in the index, and commit them as a real tree. We do that Git knows about in the index, and commit them as a real tree. We do
that in two phases: creating a 'tree' object, and committing that 'tree' that in two phases: creating a 'tree' object, and committing that 'tree'
object as a 'commit' object together with an explanation of what the object as a 'commit' object together with an explanation of what the
tree was all about, along with information of how we came to that state. tree was all about, along with information of how we came to that state.
@ -296,7 +296,7 @@ There are no options or other input: `git write-tree` will take the
current index state, and write an object that describes that whole current index state, and write an object that describes that whole
index. In other words, we're now tying together all the different index. In other words, we're now tying together all the different
filenames with their contents (and their permissions), and we're filenames with their contents (and their permissions), and we're
creating the equivalent of a git "directory" object: creating the equivalent of a Git "directory" object:
------------------------------------------------ ------------------------------------------------
$ git write-tree $ git write-tree
@ -415,9 +415,9 @@ regardless of whether the `--cached` flag is used or not. The `--cached`
flag really only determines whether the file *contents* to be compared flag really only determines whether the file *contents* to be compared
come from the working tree or not. come from the working tree or not.
This is not hard to understand, as soon as you realize that git simply This is not hard to understand, as soon as you realize that Git simply
never knows (or cares) about files that it is not told about never knows (or cares) about files that it is not told about
explicitly. git will never go *looking* for files to compare, it explicitly. Git will never go *looking* for files to compare, it
expects you to tell it what the files are, and that's what the index expects you to tell it what the files are, and that's what the index
is there for. is there for.
================ ================
@ -433,7 +433,7 @@ update the index cache:
$ git update-index hello $ git update-index hello
------------------------------------------------ ------------------------------------------------
(note how we didn't need the `--add` flag this time, since git knew (note how we didn't need the `--add` flag this time, since Git knew
about the file already). about the file already).
Note what happens to the different 'git diff-{asterisk}' versions here. Note what happens to the different 'git diff-{asterisk}' versions here.
@ -464,7 +464,7 @@ this point (you can continue to edit things and update the index), you
can just leave an empty message. Otherwise `git commit` will commit can just leave an empty message. Otherwise `git commit` will commit
the change for you. the change for you.
You've now made your first real git commit. And if you're interested in You've now made your first real Git commit. And if you're interested in
looking at what `git commit` really does, feel free to investigate: looking at what `git commit` really does, feel free to investigate:
it's a few very simple shell scripts to generate the helpful (?) commit it's a few very simple shell scripts to generate the helpful (?) commit
message headers, and a few one-liners that actually do the message headers, and a few one-liners that actually do the
@ -535,7 +535,7 @@ all, but just show the actual commit message.
In fact, together with the 'git rev-list' program (which generates a In fact, together with the 'git rev-list' program (which generates a
list of revisions), 'git diff-tree' ends up being a veritable fount of list of revisions), 'git diff-tree' ends up being a veritable fount of
changes. A trivial (but very useful) script called 'git whatchanged' is changes. A trivial (but very useful) script called 'git whatchanged' is
included with git which does exactly this, and shows a log of recent included with Git which does exactly this, and shows a log of recent
activities. activities.
To see the whole history of our pitiful little git-tutorial project, you To see the whole history of our pitiful little git-tutorial project, you
@ -563,19 +563,19 @@ the log.showroot configuration variable to false. Having this, you
can still show it for each command just adding the `--root` option, can still show it for each command just adding the `--root` option,
which is a flag for 'git diff-tree' accepted by both commands. which is a flag for 'git diff-tree' accepted by both commands.
With that, you should now be having some inkling of what git does, and With that, you should now be having some inkling of what Git does, and
can explore on your own. can explore on your own.
[NOTE] [NOTE]
Most likely, you are not directly using the core Most likely, you are not directly using the core
git Plumbing commands, but using Porcelain such as 'git add', `git-rm' Git Plumbing commands, but using Porcelain such as 'git add', `git-rm'
and `git-commit'. and `git-commit'.
Tagging a version Tagging a version
----------------- -----------------
In git, there are two kinds of tags, a "light" one, and an "annotated tag". In Git, there are two kinds of tags, a "light" one, and an "annotated tag".
A "light" tag is technically nothing more than a branch, except we put A "light" tag is technically nothing more than a branch, except we put
it in the `.git/refs/tags/` subdirectory instead of calling it a `head`. it in the `.git/refs/tags/` subdirectory instead of calling it a `head`.
@ -598,7 +598,7 @@ obviously be an empty diff, but if you continue to develop and commit
stuff, you can use your tag as an "anchor-point" to see what has changed stuff, you can use your tag as an "anchor-point" to see what has changed
since you tagged it. since you tagged it.
An "annotated tag" is actually a real git object, and contains not only a An "annotated tag" is actually a real Git object, and contains not only a
pointer to the state you want to tag, but also a small tag name and pointer to the state you want to tag, but also a small tag name and
message, along with optionally a PGP signature that says that yes, message, along with optionally a PGP signature that says that yes,
you really did you really did
@ -623,17 +623,17 @@ name for the state at that point.
Copying repositories Copying repositories
-------------------- --------------------
git repositories are normally totally self-sufficient and relocatable. Git repositories are normally totally self-sufficient and relocatable.
Unlike CVS, for example, there is no separate notion of Unlike CVS, for example, there is no separate notion of
"repository" and "working tree". A git repository normally *is* the "repository" and "working tree". A Git repository normally *is* the
working tree, with the local git information hidden in the `.git` working tree, with the local Git information hidden in the `.git`
subdirectory. There is nothing else. What you see is what you got. subdirectory. There is nothing else. What you see is what you got.
[NOTE] [NOTE]
You can tell git to split the git internal information from You can tell Git to split the Git internal information from
the directory that it tracks, but we'll ignore that for now: it's not the directory that it tracks, but we'll ignore that for now: it's not
how normal projects work, and it's really only meant for special uses. how normal projects work, and it's really only meant for special uses.
So the mental model of "the git information is always tied directly to So the mental model of "the Git information is always tied directly to
the working tree that it describes" may not be technically 100% the working tree that it describes" may not be technically 100%
accurate, but it's a good model for all normal use. accurate, but it's a good model for all normal use.
@ -649,13 +649,13 @@ $ rm -rf git-tutorial
and it will be gone. There's no external repository, and there's no and it will be gone. There's no external repository, and there's no
history outside the project you created. history outside the project you created.
- if you want to move or duplicate a git repository, you can do so. There - if you want to move or duplicate a Git repository, you can do so. There
is 'git clone' command, but if all you want to do is just to is 'git clone' command, but if all you want to do is just to
create a copy of your repository (with all the full history that create a copy of your repository (with all the full history that
went along with it), you can do so with a regular went along with it), you can do so with a regular
`cp -a git-tutorial new-git-tutorial`. `cp -a git-tutorial new-git-tutorial`.
+ +
Note that when you've moved or copied a git repository, your git index Note that when you've moved or copied a Git repository, your Git index
file (which caches various information, notably some of the "stat" file (which caches various information, notably some of the "stat"
information for the files involved) will likely need to be refreshed. information for the files involved) will likely need to be refreshed.
So after you do a `cp -a` to create a new copy, you'll want to do So after you do a `cp -a` to create a new copy, you'll want to do
@ -667,7 +667,7 @@ $ git update-index --refresh
in the new repository to make sure that the index file is up-to-date. in the new repository to make sure that the index file is up-to-date.
Note that the second point is true even across machines. You can Note that the second point is true even across machines. You can
duplicate a remote git repository with *any* regular copy mechanism, be it duplicate a remote Git repository with *any* regular copy mechanism, be it
'scp', 'rsync' or 'wget'. 'scp', 'rsync' or 'wget'.
When copying a remote repository, you'll want to at a minimum update the When copying a remote repository, you'll want to at a minimum update the
@ -694,23 +694,23 @@ The above can also be written as simply
$ git reset $ git reset
---------------- ----------------
and in fact a lot of the common git command combinations can be scripted and in fact a lot of the common Git command combinations can be scripted
with the `git xyz` interfaces. You can learn things by just looking with the `git xyz` interfaces. You can learn things by just looking
at what the various git scripts do. For example, `git reset` used to be at what the various git scripts do. For example, `git reset` used to be
the above two lines implemented in 'git reset', but some things like the above two lines implemented in 'git reset', but some things like
'git status' and 'git commit' are slightly more complex scripts around 'git status' and 'git commit' are slightly more complex scripts around
the basic git commands. the basic Git commands.
Many (most?) public remote repositories will not contain any of Many (most?) public remote repositories will not contain any of
the checked out files or even an index file, and will *only* contain the the checked out files or even an index file, and will *only* contain the
actual core git files. Such a repository usually doesn't even have the actual core Git files. Such a repository usually doesn't even have the
`.git` subdirectory, but has all the git files directly in the `.git` subdirectory, but has all the Git files directly in the
repository. repository.
To create your own local live copy of such a "raw" git repository, you'd To create your own local live copy of such a "raw" Git repository, you'd
first create your own subdirectory for the project, and then copy the first create your own subdirectory for the project, and then copy the
raw repository contents into the `.git` directory. For example, to raw repository contents into the `.git` directory. For example, to
create your own copy of the git repository, you'd do the following create your own copy of the Git repository, you'd do the following
---------------- ----------------
$ mkdir my-git $ mkdir my-git
@ -725,7 +725,7 @@ $ git read-tree HEAD
---------------- ----------------
to populate the index. However, now you have populated the index, and to populate the index. However, now you have populated the index, and
you have all the git internal files, but you will notice that you don't you have all the Git internal files, but you will notice that you don't
actually have any of the working tree files to work on. To get actually have any of the working tree files to work on. To get
those, you'd check them out with those, you'd check them out with
@ -757,7 +757,7 @@ repository, and checked it out.
Creating a new branch Creating a new branch
--------------------- ---------------------
Branches in git are really nothing more than pointers into the git Branches in Git are really nothing more than pointers into the Git
object database from within the `.git/refs/` subdirectory, and as we object database from within the `.git/refs/` subdirectory, and as we
already discussed, the `HEAD` branch is nothing but a symlink to one of already discussed, the `HEAD` branch is nothing but a symlink to one of
these object pointers. these object pointers.
@ -849,7 +849,7 @@ $ git commit -m "Some work." -i hello
Here, we just added another line to `hello`, and we used a shorthand for Here, we just added another line to `hello`, and we used a shorthand for
doing both `git update-index hello` and `git commit` by just giving the doing both `git update-index hello` and `git commit` by just giving the
filename directly to `git commit`, with an `-i` flag (it tells filename directly to `git commit`, with an `-i` flag (it tells
git to 'include' that file in addition to what you have done to Git to 'include' that file in addition to what you have done to
the index file so far when making the commit). The `-m` flag is to give the the index file so far when making the commit). The `-m` flag is to give the
commit log message from the command line. commit log message from the command line.
@ -900,7 +900,7 @@ where the first argument is going to be used as the commit message if
the merge can be resolved automatically. the merge can be resolved automatically.
Now, in this case we've intentionally created a situation where the Now, in this case we've intentionally created a situation where the
merge will need to be fixed up by hand, though, so git will do as much merge will need to be fixed up by hand, though, so Git will do as much
of it as it can automatically (which in this case is just merge the `example` of it as it can automatically (which in this case is just merge the `example`
file, which had no differences in the `mybranch` branch), and say: file, which had no differences in the `mybranch` branch), and say:
@ -939,7 +939,7 @@ After you're done, start up `gitk --all` to see graphically what the
history looks like. Notice that `mybranch` still exists, and you can history looks like. Notice that `mybranch` still exists, and you can
switch to it, and continue to work with it if you want to. The switch to it, and continue to work with it if you want to. The
`mybranch` branch will not contain the merge, but next time you merge it `mybranch` branch will not contain the merge, but next time you merge it
from the `master` branch, git will know how you merged it, so you'll not from the `master` branch, Git will know how you merged it, so you'll not
have to do _that_ merge again. have to do _that_ merge again.
Another useful tool, especially if you do not always work in X-Window Another useful tool, especially if you do not always work in X-Window
@ -1028,7 +1028,7 @@ Merging external work
--------------------- ---------------------
It's usually much more common that you merge with somebody else than It's usually much more common that you merge with somebody else than
merging with your own branches, so it's worth pointing out that git merging with your own branches, so it's worth pointing out that Git
makes that very easy too, and in fact, it's not that different from makes that very easy too, and in fact, it's not that different from
doing a 'git merge'. In fact, a remote merge ends up being nothing doing a 'git merge'. In fact, a remote merge ends up being nothing
more than "fetch the work from a remote repository into a temporary tag" more than "fetch the work from a remote repository into a temporary tag"
@ -1068,7 +1068,7 @@ and requires you to have a log-in privilege over `ssh` to the
remote machine. It finds out the set of objects the other side remote machine. It finds out the set of objects the other side
lacks by exchanging the head commits both ends have and lacks by exchanging the head commits both ends have and
transfers (close to) minimum set of objects. It is by far the transfers (close to) minimum set of objects. It is by far the
most efficient way to exchange git objects between repositories. most efficient way to exchange Git objects between repositories.
Local directory:: Local directory::
`/path/to/repo.git/` `/path/to/repo.git/`
@ -1077,7 +1077,7 @@ This transport is the same as SSH transport but uses 'sh' to run
both ends on the local machine instead of running other end on both ends on the local machine instead of running other end on
the remote machine via 'ssh'. the remote machine via 'ssh'.
git Native:: Git Native::
`git://remote.machine/path/to/repo.git/` `git://remote.machine/path/to/repo.git/`
+ +
This transport was designed for anonymous downloading. Like SSH This transport was designed for anonymous downloading. Like SSH
@ -1099,8 +1099,8 @@ necessary objects. Because of this behavior, they are
sometimes also called 'commit walkers'. sometimes also called 'commit walkers'.
+ +
The 'commit walkers' are sometimes also called 'dumb The 'commit walkers' are sometimes also called 'dumb
transports', because they do not require any git aware smart transports', because they do not require any Git aware smart
server like git Native transport does. Any stock HTTP server server like Git Native transport does. Any stock HTTP server
that does not even support directory index would suffice. But that does not even support directory index would suffice. But
you must prepare your repository with 'git update-server-info' you must prepare your repository with 'git update-server-info'
to help dumb transport downloaders. to help dumb transport downloaders.
@ -1321,7 +1321,7 @@ update the public repository from it. This is often called
[NOTE] [NOTE]
This public repository could further be mirrored, and that is This public repository could further be mirrored, and that is
how git repositories at `kernel.org` are managed. how Git repositories at `kernel.org` are managed.
Publishing the changes from your local (private) repository to Publishing the changes from your local (private) repository to
your remote (public) repository requires a write privilege on your remote (public) repository requires a write privilege on
@ -1340,7 +1340,7 @@ done only once.
on the remote machine. The communication between the two over on the remote machine. The communication between the two over
the network internally uses an SSH connection. the network internally uses an SSH connection.
Your private repository's git directory is usually `.git`, but Your private repository's Git directory is usually `.git`, but
your public repository is often named after the project name, your public repository is often named after the project name,
i.e. `<project>.git`. Let's create such a public repository for i.e. `<project>.git`. Let's create such a public repository for
project `my-git`. After logging into the remote machine, create project `my-git`. After logging into the remote machine, create
@ -1350,7 +1350,7 @@ an empty directory:
$ mkdir my-git.git $ mkdir my-git.git
------------ ------------
Then, make that directory into a git repository by running Then, make that directory into a Git repository by running
'git init', but this time, since its name is not the usual 'git init', but this time, since its name is not the usual
`.git`, we do things slightly differently: `.git`, we do things slightly differently:
@ -1389,7 +1389,7 @@ This synchronizes your public repository to match the named
branch head (i.e. `master` in this case) and objects reachable branch head (i.e. `master` in this case) and objects reachable
from them in your current repository. from them in your current repository.
As a real example, this is how I update my public git As a real example, this is how I update my public Git
repository. Kernel.org mirror network takes care of the repository. Kernel.org mirror network takes care of the
propagation to other publicly visible machines: propagation to other publicly visible machines:
@ -1402,9 +1402,9 @@ Packing your repository
----------------------- -----------------------
Earlier, we saw that one file under `.git/objects/??/` directory Earlier, we saw that one file under `.git/objects/??/` directory
is stored for each git object you create. This representation is stored for each Git object you create. This representation
is efficient to create atomically and safely, but is efficient to create atomically and safely, but
not so convenient to transport over the network. Since git objects are not so convenient to transport over the network. Since Git objects are
immutable once they are created, there is a way to optimize the immutable once they are created, there is a way to optimize the
storage by "packing them together". The command storage by "packing them together". The command
@ -1472,14 +1472,14 @@ repositories every once in a while.
Working with Others Working with Others
------------------- -------------------
Although git is a truly distributed system, it is often Although Git is a truly distributed system, it is often
convenient to organize your project with an informal hierarchy convenient to organize your project with an informal hierarchy
of developers. Linux kernel development is run this way. There of developers. Linux kernel development is run this way. There
is a nice illustration (page 17, "Merges to Mainline") in is a nice illustration (page 17, "Merges to Mainline") in
link:http://www.xenotime.net/linux/mentor/linux-mentoring-2006.pdf[Randy Dunlap's presentation]. link:http://www.xenotime.net/linux/mentor/linux-mentoring-2006.pdf[Randy Dunlap's presentation].
It should be stressed that this hierarchy is purely *informal*. It should be stressed that this hierarchy is purely *informal*.
There is nothing fundamental in git that enforces the "chain of There is nothing fundamental in Git that enforces the "chain of
patch flow" this hierarchy implies. You do not have to pull patch flow" this hierarchy implies. You do not have to pull
from only one remote repository. from only one remote repository.
@ -1592,7 +1592,7 @@ Working with Others, Shared Repository Style
If you are coming from CVS background, the style of cooperation If you are coming from CVS background, the style of cooperation
suggested in the previous section may be new to you. You do not suggested in the previous section may be new to you. You do not
have to worry. git supports "shared public repository" style of have to worry. Git supports "shared public repository" style of
cooperation you are probably more familiar with as well. cooperation you are probably more familiar with as well.
See linkgit:gitcvs-migration[7] for the details. See linkgit:gitcvs-migration[7] for the details.
@ -1602,7 +1602,7 @@ Bundling your work together
It is likely that you will be working on more than one thing at It is likely that you will be working on more than one thing at
a time. It is easy to manage those more-or-less independent tasks a time. It is easy to manage those more-or-less independent tasks
using branches with git. using branches with Git.
We have already seen how branches work previously, We have already seen how branches work previously,
with "fun and work" example using two branches. The idea is the with "fun and work" example using two branches. The idea is the

View File

@ -3,7 +3,7 @@ gitcredentials(7)
NAME NAME
---- ----
gitcredentials - providing usernames and passwords to git gitcredentials - providing usernames and passwords to Git
SYNOPSIS SYNOPSIS
-------- --------
@ -18,13 +18,13 @@ DESCRIPTION
Git will sometimes need credentials from the user in order to perform Git will sometimes need credentials from the user in order to perform
operations; for example, it may need to ask for a username and password operations; for example, it may need to ask for a username and password
in order to access a remote repository over HTTP. This manual describes in order to access a remote repository over HTTP. This manual describes
the mechanisms git uses to request these credentials, as well as some the mechanisms Git uses to request these credentials, as well as some
features to avoid inputting these credentials repeatedly. features to avoid inputting these credentials repeatedly.
REQUESTING CREDENTIALS REQUESTING CREDENTIALS
---------------------- ----------------------
Without any credential helpers defined, git will try the following Without any credential helpers defined, Git will try the following
strategies to ask the user for usernames and passwords: strategies to ask the user for usernames and passwords:
1. If the `GIT_ASKPASS` environment variable is set, the program 1. If the `GIT_ASKPASS` environment variable is set, the program
@ -59,7 +59,7 @@ for a password. It is generally configured by adding this to your config:
username = me username = me
--------------------------------------- ---------------------------------------
Credential helpers, on the other hand, are external programs from which git can Credential helpers, on the other hand, are external programs from which Git can
request both usernames and passwords; they typically interface with secure request both usernames and passwords; they typically interface with secure
storage provided by the OS or other programs. storage provided by the OS or other programs.
@ -79,7 +79,7 @@ store::
You may also have third-party helpers installed; search for You may also have third-party helpers installed; search for
`credential-*` in the output of `git help -a`, and consult the `credential-*` in the output of `git help -a`, and consult the
documentation of individual helpers. Once you have selected a helper, documentation of individual helpers. Once you have selected a helper,
you can tell git to use it by putting its name into the you can tell Git to use it by putting its name into the
credential.helper variable. credential.helper variable.
1. Find a helper. 1. Find a helper.
@ -95,7 +95,7 @@ credential-foo
$ git help credential-foo $ git help credential-foo
------------------------------------------- -------------------------------------------
3. Tell git to use it. 3. Tell Git to use it.
+ +
------------------------------------------- -------------------------------------------
$ git config --global credential.helper foo $ git config --global credential.helper foo
@ -103,7 +103,7 @@ $ git config --global credential.helper foo
If there are multiple instances of the `credential.helper` configuration If there are multiple instances of the `credential.helper` configuration
variable, each helper will be tried in turn, and may provide a username, variable, each helper will be tried in turn, and may provide a username,
password, or nothing. Once git has acquired both a username and a password, or nothing. Once Git has acquired both a username and a
password, no more helpers will be tried. password, no more helpers will be tried.
@ -114,7 +114,7 @@ Git considers each credential to have a context defined by a URL. This context
is used to look up context-specific configuration, and is passed to any is used to look up context-specific configuration, and is passed to any
helpers, which may use it as an index into secure storage. helpers, which may use it as an index into secure storage.
For instance, imagine we are accessing `https://example.com/foo.git`. When git For instance, imagine we are accessing `https://example.com/foo.git`. When Git
looks into a config file to see if a section matches this context, it will looks into a config file to see if a section matches this context, it will
consider the two a match if the context is a more-specific subset of the consider the two a match if the context is a more-specific subset of the
pattern in the config file. For example, if you have this in your config file: pattern in the config file. For example, if you have this in your config file:
@ -133,10 +133,10 @@ context would not match:
username = foo username = foo
-------------------------------------- --------------------------------------
because the hostnames differ. Nor would it match `foo.example.com`; git because the hostnames differ. Nor would it match `foo.example.com`; Git
compares hostnames exactly, without considering whether two hosts are part of compares hostnames exactly, without considering whether two hosts are part of
the same domain. Likewise, a config entry for `http://example.com` would not the same domain. Likewise, a config entry for `http://example.com` would not
match: git compares the protocols exactly. match: Git compares the protocols exactly.
CONFIGURATION OPTIONS CONFIGURATION OPTIONS
@ -164,7 +164,7 @@ username::
useHttpPath:: useHttpPath::
By default, git does not consider the "path" component of an http URL By default, Git does not consider the "path" component of an http URL
to be worth matching via external helpers. This means that a credential to be worth matching via external helpers. This means that a credential
stored for `https://example.com/foo.git` will also be used for stored for `https://example.com/foo.git` will also be used for
`https://example.com/bar.git`. If you do want to distinguish these `https://example.com/bar.git`. If you do want to distinguish these
@ -175,7 +175,7 @@ CUSTOM HELPERS
-------------- --------------
You can write your own custom helpers to interface with any system in You can write your own custom helpers to interface with any system in
which you keep credentials. See the documentation for git's which you keep credentials. See the documentation for Git's
link:technical/api-credentials.html[credentials API] for details. link:technical/api-credentials.html[credentials API] for details.
GIT GIT

View File

@ -3,7 +3,7 @@ gitcvs-migration(7)
NAME NAME
---- ----
gitcvs-migration - git for CVS users gitcvs-migration - Git for CVS users
SYNOPSIS SYNOPSIS
-------- --------
@ -19,7 +19,7 @@ important than any other. However, you can emulate the CVS model by
designating a single shared repository which people can synchronize with; designating a single shared repository which people can synchronize with;
this document explains how to do that. this document explains how to do that.
Some basic familiarity with git is required. Having gone through Some basic familiarity with Git is required. Having gone through
linkgit:gittutorial[7] and linkgit:gittutorial[7] and
linkgit:gitglossary[7] should be sufficient. linkgit:gitglossary[7] should be sufficient.
@ -81,7 +81,7 @@ other than `master`.
Setting Up a Shared Repository Setting Up a Shared Repository
------------------------------ ------------------------------
We assume you have already created a git repository for your project, We assume you have already created a Git repository for your project,
possibly created from scratch or from a tarball (see possibly created from scratch or from a tarball (see
linkgit:gittutorial[7]), or imported from an already existing CVS linkgit:gittutorial[7]), or imported from an already existing CVS
repository (see the next section). repository (see the next section).
@ -101,7 +101,7 @@ Next, give every team member read/write access to this repository. One
easy way to do this is to give all the team members ssh access to the easy way to do this is to give all the team members ssh access to the
machine where the repository is hosted. If you don't want to give them a machine where the repository is hosted. If you don't want to give them a
full shell on the machine, there is a restricted shell which only allows full shell on the machine, there is a restricted shell which only allows
users to do git pushes and pulls; see linkgit:git-shell[1]. users to do Git pushes and pulls; see linkgit:git-shell[1].
Put all the committers in the same group, and make the repository Put all the committers in the same group, and make the repository
writable by that group: writable by that group:
@ -125,7 +125,7 @@ of the project you are interested in and run linkgit:git-cvsimport[1]:
$ git cvsimport -C <destination> <module> $ git cvsimport -C <destination> <module>
------------------------------------------- -------------------------------------------
This puts a git archive of the named CVS module in the directory This puts a Git archive of the named CVS module in the directory
<destination>, which will be created if necessary. <destination>, which will be created if necessary.
The import checks out from CVS every revision of every file. Reportedly The import checks out from CVS every revision of every file. Reportedly
@ -133,8 +133,8 @@ cvsimport can average some twenty revisions per second, so for a
medium-sized project this should not take more than a couple of minutes. medium-sized project this should not take more than a couple of minutes.
Larger projects or remote repositories may take longer. Larger projects or remote repositories may take longer.
The main trunk is stored in the git branch named `origin`, and additional The main trunk is stored in the Git branch named `origin`, and additional
CVS branches are stored in git branches with the same names. The most CVS branches are stored in Git branches with the same names. The most
recent version of the main trunk is also left checked out on the `master` recent version of the main trunk is also left checked out on the `master`
branch, so you can start adding your own changes right away. branch, so you can start adding your own changes right away.
@ -160,10 +160,10 @@ You can enforce finer grained permissions using update hooks. See
link:howto/update-hook-example.txt[Controlling access to branches using link:howto/update-hook-example.txt[Controlling access to branches using
update hooks]. update hooks].
Providing CVS Access to a git Repository Providing CVS Access to a Git Repository
---------------------------------------- ----------------------------------------
It is also possible to provide true CVS access to a git repository, so It is also possible to provide true CVS access to a Git repository, so
that developers can still use CVS; see linkgit:git-cvsserver[1] for that developers can still use CVS; see linkgit:git-cvsserver[1] for
details. details.
@ -171,8 +171,8 @@ Alternative Development Models
------------------------------ ------------------------------
CVS users are accustomed to giving a group of developers commit access to CVS users are accustomed to giving a group of developers commit access to
a common repository. As we've seen, this is also possible with git. a common repository. As we've seen, this is also possible with Git.
However, the distributed nature of git allows other development models, However, the distributed nature of Git allows other development models,
and you may want to first consider whether one of them might be a better and you may want to first consider whether one of them might be a better
fit for your project. fit for your project.

View File

@ -254,7 +254,7 @@ pattern. Filepairs that match a glob pattern on an earlier line
in the file are output before ones that match a later line, and in the file are output before ones that match a later line, and
filepairs that do not match any glob pattern are output last. filepairs that do not match any glob pattern are output last.
As an example, a typical orderfile for the core git probably As an example, a typical orderfile for the core Git probably
would look like this: would look like this:
------------------------------------------------ ------------------------------------------------

View File

@ -3,7 +3,7 @@ gitglossary(7)
NAME NAME
---- ----
gitglossary - A GIT Glossary gitglossary - A Git Glossary
SYNOPSIS SYNOPSIS
-------- --------
@ -19,7 +19,7 @@ SEE ALSO
linkgit:gittutorial[7], linkgit:gittutorial[7],
linkgit:gittutorial-2[7], linkgit:gittutorial-2[7],
linkgit:gitcvs-migration[7], linkgit:gitcvs-migration[7],
link:everyday.html[Everyday git], link:everyday.html[Everyday Git],
link:user-manual.html[The Git User's Manual] link:user-manual.html[The Git User's Manual]
GIT GIT

View File

@ -3,7 +3,7 @@ githooks(5)
NAME NAME
---- ----
githooks - Hooks used by git githooks - Hooks used by Git
SYNOPSIS SYNOPSIS
-------- --------
@ -108,7 +108,7 @@ it is not suppressed by the `--no-verify` option. A non-zero exit
means a failure of the hook and aborts the commit. It should not means a failure of the hook and aborts the commit. It should not
be used as replacement for pre-commit hook. be used as replacement for pre-commit hook.
The sample `prepare-commit-msg` hook that comes with git comments The sample `prepare-commit-msg` hook that comes with Git comments
out the `Conflicts:` part of a merge's commit message. out the `Conflicts:` part of a merge's commit message.
commit-msg commit-msg
@ -304,7 +304,7 @@ for the user.
The default 'post-receive' hook is empty, but there is The default 'post-receive' hook is empty, but there is
a sample script `post-receive-email` provided in the `contrib/hooks` a sample script `post-receive-email` provided in the `contrib/hooks`
directory in git distribution, which implements sending commit directory in Git distribution, which implements sending commit
emails. emails.
[[post-update]] [[post-update]]
@ -332,7 +332,7 @@ them.
When enabled, the default 'post-update' hook runs When enabled, the default 'post-update' hook runs
'git update-server-info' to keep the information used by dumb 'git update-server-info' to keep the information used by dumb
transports (e.g., HTTP) up-to-date. If you are publishing transports (e.g., HTTP) up-to-date. If you are publishing
a git repository that is accessible via HTTP, you should a Git repository that is accessible via HTTP, you should
probably enable this hook. probably enable this hook.
Both standard output and standard error output are forwarded to Both standard output and standard error output are forwarded to

View File

@ -13,12 +13,12 @@ DESCRIPTION
----------- -----------
A `gitignore` file specifies intentionally untracked files that A `gitignore` file specifies intentionally untracked files that
git should ignore. Git should ignore.
Files already tracked by git are not affected; see the NOTES Files already tracked by Git are not affected; see the NOTES
below for details. below for details.
Each line in a `gitignore` file specifies a pattern. Each line in a `gitignore` file specifies a pattern.
When deciding whether to ignore a path, git normally checks When deciding whether to ignore a path, Git normally checks
`gitignore` patterns from multiple sources, with the following `gitignore` patterns from multiple sources, with the following
order of precedence, from highest to lowest (within one level of order of precedence, from highest to lowest (within one level of
precedence, the last matching pattern decides the outcome): precedence, the last matching pattern decides the outcome):
@ -53,17 +53,17 @@ be used.
the repository but are specific to one user's workflow) should go into the repository but are specific to one user's workflow) should go into
the `$GIT_DIR/info/exclude` file. the `$GIT_DIR/info/exclude` file.
* Patterns which a user wants git to * Patterns which a user wants Git to
ignore in all situations (e.g., backup or temporary files generated by ignore in all situations (e.g., backup or temporary files generated by
the user's editor of choice) generally go into a file specified by the user's editor of choice) generally go into a file specified by
`core.excludesfile` in the user's `~/.gitconfig`. Its default value is `core.excludesfile` in the user's `~/.gitconfig`. Its default value is
$XDG_CONFIG_HOME/git/ignore. If $XDG_CONFIG_HOME is either not set or $XDG_CONFIG_HOME/git/ignore. If $XDG_CONFIG_HOME is either not set or
empty, $HOME/.config/git/ignore is used instead. empty, $HOME/.config/git/ignore is used instead.
The underlying git plumbing tools, such as The underlying Git plumbing tools, such as
'git ls-files' and 'git read-tree', read 'git ls-files' and 'git read-tree', read
`gitignore` patterns specified by command-line options, or from `gitignore` patterns specified by command-line options, or from
files specified by command-line options. Higher-level git files specified by command-line options. Higher-level Git
tools, such as 'git status' and 'git add', tools, such as 'git status' and 'git add',
use patterns from the sources specified above. use patterns from the sources specified above.
@ -89,15 +89,15 @@ PATTERN FORMAT
a match with a directory. In other words, `foo/` will match a a match with a directory. In other words, `foo/` will match a
directory `foo` and paths underneath it, but will not match a directory `foo` and paths underneath it, but will not match a
regular file or a symbolic link `foo` (this is consistent regular file or a symbolic link `foo` (this is consistent
with the way how pathspec works in general in git). with the way how pathspec works in general in Git).
- If the pattern does not contain a slash '/', git treats it as - If the pattern does not contain a slash '/', Git treats it as
a shell glob pattern and checks for a match against the a shell glob pattern and checks for a match against the
pathname relative to the location of the `.gitignore` file pathname relative to the location of the `.gitignore` file
(relative to the toplevel of the work tree if not from a (relative to the toplevel of the work tree if not from a
`.gitignore` file). `.gitignore` file).
- Otherwise, git treats the pattern as a shell glob suitable - Otherwise, Git treats the pattern as a shell glob suitable
for consumption by fnmatch(3) with the FNM_PATHNAME flag: for consumption by fnmatch(3) with the FNM_PATHNAME flag:
wildcards in the pattern will not match a / in the pathname. wildcards in the pattern will not match a / in the pathname.
For example, "Documentation/{asterisk}.html" matches For example, "Documentation/{asterisk}.html" matches
@ -131,7 +131,7 @@ NOTES
----- -----
The purpose of gitignore files is to ensure that certain files The purpose of gitignore files is to ensure that certain files
not tracked by git remain untracked. not tracked by Git remain untracked.
To ignore uncommitted changes in a file that is already tracked, To ignore uncommitted changes in a file that is already tracked,
use 'git update-index {litdd}assume-unchanged'. use 'git update-index {litdd}assume-unchanged'.
@ -179,7 +179,7 @@ Another example:
$ echo '!/vmlinux*' >arch/foo/kernel/.gitignore $ echo '!/vmlinux*' >arch/foo/kernel/.gitignore
-------------------------------------------------------------- --------------------------------------------------------------
The second .gitignore prevents git from ignoring The second .gitignore prevents Git from ignoring
`arch/foo/kernel/vmlinux.lds.S`. `arch/foo/kernel/vmlinux.lds.S`.
SEE ALSO SEE ALSO

View File

@ -3,7 +3,7 @@ gitk(1)
NAME NAME
---- ----
gitk - The git repository browser gitk - The Git repository browser
SYNOPSIS SYNOPSIS
-------- --------
@ -18,7 +18,7 @@ the files in the trees of each revision.
Historically, gitk was the first repository browser. It's written in tcl/tk Historically, gitk was the first repository browser. It's written in tcl/tk
and started off in a separate repository but was later merged into the main and started off in a separate repository but was later merged into the main
git repository. Git repository.
OPTIONS OPTIONS
------- -------
@ -108,10 +108,10 @@ SEE ALSO
'gitview(1)':: 'gitview(1)'::
A repository browser written in Python using Gtk. It's based on A repository browser written in Python using Gtk. It's based on
'bzrk(1)' and distributed in the contrib area of the git repository. 'bzrk(1)' and distributed in the contrib area of the Git repository.
'tig(1)':: 'tig(1)'::
A minimal repository browser and git tool output highlighter written A minimal repository browser and Git tool output highlighter written
in C using Ncurses. in C using Ncurses.
GIT GIT

View File

@ -13,7 +13,7 @@ $GIT_WORK_DIR/.gitmodules
DESCRIPTION DESCRIPTION
----------- -----------
The `.gitmodules` file, located in the top-level directory of a git The `.gitmodules` file, located in the top-level directory of a Git
working tree, is a text file with a syntax matching the requirements working tree, is a text file with a syntax matching the requirements
of linkgit:git-config[1]. of linkgit:git-config[1].
@ -24,7 +24,7 @@ option of 'git submodule add'. Each submodule section also contains the
following required keys: following required keys:
submodule.<name>.path:: submodule.<name>.path::
Defines the path, relative to the top-level directory of the git Defines the path, relative to the top-level directory of the Git
working tree, where the submodule is expected to be checked out. working tree, where the submodule is expected to be checked out.
The path name must not end with a `/`. All submodule paths must The path name must not end with a `/`. All submodule paths must
be unique within the .gitmodules file. be unique within the .gitmodules file.

View File

@ -29,7 +29,7 @@ prevent duplication between new objects added to the repositories
without ongoing maintenance, while namespaces do. without ongoing maintenance, while namespaces do.
To specify a namespace, set the `GIT_NAMESPACE` environment variable to To specify a namespace, set the `GIT_NAMESPACE` environment variable to
the namespace. For each ref namespace, git stores the corresponding the namespace. For each ref namespace, Git stores the corresponding
refs in a directory under `refs/namespaces/`. For example, refs in a directory under `refs/namespaces/`. For example,
`GIT_NAMESPACE=foo` will store refs under `refs/namespaces/foo/`. You `GIT_NAMESPACE=foo` will store refs under `refs/namespaces/foo/`. You
can also specify namespaces via the `--namespace` option to can also specify namespaces via the `--namespace` option to

View File

@ -12,12 +12,24 @@ $GIT_DIR/*
DESCRIPTION DESCRIPTION
----------- -----------
You may find these things in your git repository (`.git` A Git repository comes in two different flavours:
directory for a repository associated with your working tree, or
`<project>.git` directory for a public 'bare' repository. It is * a `.git` directory at the root of the working tree;
also possible to have a working tree where `.git` is a plain
ASCII file containing `gitdir: <path>`, i.e. the path to the * a `<project>.git` directory that is a 'bare' repository
real git repository). (i.e. without its own working tree), that is typically used for
exchanging histories with others by pushing into it and fetching
from it.
*Note*: Also you can have a plain text file `.git` at the root of
your working tree, containing `gitdir: <path>` to point at the real
directory that has the repository. This mechanism is often used for
a working tree of a submodule checkout, to allow you in the
containing superproject to `git checkout` a branch that does not
have the submodule. The `checkout` has to remove the entire
submodule working tree, without losing the submodule repository.
These things may exist in a Git repository.
objects:: objects::
Object store associated with this repository. Usually Object store associated with this repository. Usually
@ -108,7 +120,7 @@ HEAD::
A symref (see glossary) to the `refs/heads/` namespace A symref (see glossary) to the `refs/heads/` namespace
describing the currently active branch. It does not mean describing the currently active branch. It does not mean
much if the repository is not associated with any working tree much if the repository is not associated with any working tree
(i.e. a 'bare' repository), but a valid git repository (i.e. a 'bare' repository), but a valid Git repository
*must* have the HEAD file; some porcelains may use it to *must* have the HEAD file; some porcelains may use it to
guess the designated "default" branch of the repository guess the designated "default" branch of the repository
(usually 'master'). It is legal if the named branch (usually 'master'). It is legal if the named branch
@ -131,7 +143,7 @@ branches::
and not likely to be found in modern repositories. and not likely to be found in modern repositories.
hooks:: hooks::
Hooks are customization scripts used by various git Hooks are customization scripts used by various Git
commands. A handful of sample hooks are installed when commands. A handful of sample hooks are installed when
'git init' is run, but all of them are disabled by 'git init' is run, but all of them are disabled by
default. To enable, the `.sample` suffix has to be default. To enable, the `.sample` suffix has to be
@ -169,7 +181,7 @@ info/exclude::
This file, by convention among Porcelains, stores the This file, by convention among Porcelains, stores the
exclude pattern list. `.gitignore` is the per-directory exclude pattern list. `.gitignore` is the per-directory
ignore file. 'git status', 'git add', 'git rm' and ignore file. 'git status', 'git add', 'git rm' and
'git clean' look at it but the core git commands do not look 'git clean' look at it but the core Git commands do not look
at it. See also: linkgit:gitignore[5]. at it. See also: linkgit:gitignore[5].
remotes:: remotes::

Some files were not shown because too many files have changed in this diff Show More