Merge branch 'master' of git://repo.or.cz/alt-git into jn/autodep

* 'master' of git://repo.or.cz/alt-git: (384 commits)
  am: fix patch format detection for Thunderbird "Save As" emails
  t0022: replace non-portable literal CR
  tests: consolidate CR removal/addition functions
  commit-tree: remove unused #define
  t5541-http-push: make grep expression check for one line only
  rebase: replace antiquated sed invocation
  Add test-run-command to .gitignore
  git_connect: use use_shell instead of explicit "sh", "-c"
  gitweb.js: Workaround for IE8 bug
  Make test numbers unique
  Windows: Remove dependency on pthreadGC2.dll
  Documentation: move away misplaced 'push --upstream' description
  Documentation: add missing :: in config.txt
  pull: re-fix command line generation
  Documentation: merge: use MERGE_HEAD to refer to the remote branch
  Documentation: simplify How Merge Works
  Documentation: merge: add a section about fast-forward
  Documentation: emphasize when git merge terminates early
  Documentation: merge: add an overview
  Documentation: merge: move merge strategy list to end
  ...

Conflicts:
	Makefile
This commit is contained in:
Jonathan Nieder 2010-01-26 10:08:44 -06:00
commit 225f78c817
414 changed files with 14972 additions and 3657 deletions

1
.gitattributes vendored
View File

@ -1,2 +1,3 @@
* whitespace=!indent,trail,space * whitespace=!indent,trail,space
*.[ch] whitespace=indent,trail,space *.[ch] whitespace=indent,trail,space
*.sh whitespace=indent,trail,space

7
.gitignore vendored
View File

@ -2,6 +2,7 @@
/GIT-CFLAGS /GIT-CFLAGS
/GIT-GUI-VARS /GIT-GUI-VARS
/GIT-VERSION-FILE /GIT-VERSION-FILE
/bin-wrappers/
/git /git
/git-add /git-add
/git-add--interactive /git-add--interactive
@ -107,6 +108,10 @@
/git-relink /git-relink
/git-remote /git-remote
/git-remote-curl /git-remote-curl
/git-remote-http
/git-remote-https
/git-remote-ftp
/git-remote-ftps
/git-repack /git-repack
/git-replace /git-replace
/git-repo-config /git-repo-config
@ -157,9 +162,11 @@
/test-delta /test-delta
/test-dump-cache-tree /test-dump-cache-tree
/test-genrandom /test-genrandom
/test-index-version
/test-match-trees /test-match-trees
/test-parse-options /test-parse-options
/test-path-utils /test-path-utils
/test-run-command
/test-sha1 /test-sha1
/test-sigchain /test-sigchain
/common-cmds.h /common-cmds.h

25
COPYING
View File

@ -22,8 +22,8 @@
GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE
Version 2, June 1991 Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc. Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed. of this license document, but changing it is not allowed.
@ -36,7 +36,7 @@ software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to the GNU Lesser General Public License instead.) You can apply it to
your programs, too. your programs, too.
When we speak of free software, we are referring to freedom, not When we speak of free software, we are referring to freedom, not
@ -76,7 +76,7 @@ patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and The precise terms and conditions for copying, distribution and
modification follow. modification follow.
GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
@ -131,7 +131,7 @@ above, provided that you also meet all of these conditions:
License. (Exception: if the Program itself is interactive but License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on does not normally print such an announcement, your work based on
the Program is not required to print an announcement.) the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program, identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in and can be reasonably considered independent and separate works in
@ -189,7 +189,7 @@ access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not distribution of the source code, even though third parties are not
compelled to copy the source along with the object code. compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program 4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is otherwise to copy, modify, sublicense or distribute the Program is
@ -246,7 +246,7 @@ impose that choice.
This section is intended to make thoroughly clear what is believed to This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License. be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in 8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License original copyright holder who places the Program under this License
@ -299,7 +299,7 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES. POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest If you develop a new program, and you want it to be of the greatest
@ -324,10 +324,9 @@ the "copyright" line and a pointer to where the full notice is found.
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License along
along with this program; if not, write to the Free Software with this program; if not, write to the Free Software Foundation, Inc.,
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail. Also add information on how to contact you by electronic and paper mail.
@ -357,5 +356,5 @@ necessary. Here is a sample; alter the names:
This General Public License does not permit incorporating your program into This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. Public License instead of this License.

View File

@ -204,7 +204,7 @@ install-pdf: pdf
install-html: html install-html: html
'$(SHELL_PATH_SQ)' ./install-webdoc.sh $(DESTDIR)$(htmldir) '$(SHELL_PATH_SQ)' ./install-webdoc.sh $(DESTDIR)$(htmldir)
../GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE ../GIT-VERSION-FILE: FORCE
$(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) GIT-VERSION-FILE $(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) GIT-VERSION-FILE
-include ../GIT-VERSION-FILE -include ../GIT-VERSION-FILE
@ -337,4 +337,4 @@ quick-install-man:
quick-install-html: quick-install-html:
'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REF) $(DESTDIR)$(htmldir) '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REF) $(DESTDIR)$(htmldir)
.PHONY: .FORCE-GIT-VERSION-FILE .PHONY: FORCE

View File

@ -0,0 +1,191 @@
Git v1.7.0 Release Notes
========================
Notes on behaviour change
-------------------------
* "git push" into a branch that is currently checked out (i.e. pointed by
HEAD in a repository that is not bare) is refused by default.
Similarly, "git push $there :$killed" to delete the branch $killed
in a remote repository $there, when $killed branch is the current
branch pointed at by its HEAD, will be refused by default.
Setting the configuration variables receive.denyCurrentBranch and
receive.denyDeleteCurrent to 'ignore' in the receiving repository
can be used to override these safety features.
* "git send-email" does not make deep threads by default when sending a
patch series with more than two messages. All messages will be sent
as a reply to the first message, i.e. cover letter.
It has been possible to configure send-email to send "shallow thread"
by setting sendemail.chainreplyto configuration variable to false. The
only thing this release does is to change the default when you haven't
configured that variable.
* "git status" is not "git commit --dry-run" anymore. This change does
not affect you if you run the command without pathspec.
* "git diff" traditionally treated various "ignore whitespace" options
only as a way to filter the patch output. "git diff --exit-code -b"
exited with non-zero status even if all changes were about changing the
ammount of whitespace and nothing else. and "git diff -b" showed the
"diff --git" header line for such a change without patch text.
In this release, the "ignore whitespaces" options affect the semantics
of the diff operation. A change that does not affect anything but
whitespaces is reported with zero exit status when run with
--exit-code, and there is no "diff --git" header for such a change.
Updates since v1.6.6
--------------------
(subsystems)
* "git fast-import" updates; adds "option" and "feature" to detect the
mismatch between fast-import and the frontends that produce the input
stream.
(portability)
* Some more MSVC portability patches for msysgit port.
* Minimum Pthreads emulation for msysgit port.
(performance)
* More performance improvement patches for msysgit port.
(usability, bells and whistles)
* More commands learned "--quiet" and "--[no-]progress" options.
* Various commands given by the end user (e.g. diff.type.textconv,
and GIT_EDITOR) can be specified with command line arguments. E.g. it
is now possible to say "[diff "utf8doc"] textconv = nkf -w".
* "sparse checkout" feature allows only part of the work tree to be
checked out.
* HTTP transfer can use authentication scheme other than basic
(i.e./e.g. digest).
* Switching from a version of superproject that used to have a submodule
to another version of superproject that no longer has it did not remove
the submodule directory when it should (namely, when you are not
interested in the submodule at all and didn't clone/checkout).
* A new attribute conflict-marker-size can be used to change the size of
the conflict markers from the default 7; this is useful when tracked
contents (e.g. git-merge documentation) have strings that resemble the
conflict markers.
* A new syntax "<branch>@{upstream}" can be used on the command line to
substitute the name of the "upstream" of the branch. Missing branch
defaults to the current branch, so "git fetch && git merge @{upstream}"
will be equivalent to "git pull".
* "git branch --set-upstream" can be used to update the (surprise!) upstream
i.e. where the branch is supposed to pull and merge from (or rebase onto).
* "git checkout A...B" is a way to detach HEAD at the merge base between
A and B.
* "git checkout -m path" to reset the work tree file back into the
conflicted state works even when you already ran "git add path" and
resolved the conflicts.
* "git commit --date='<date>'" can be used to override the author date
just like "git commit --author='<name> <email>'" can be used to
override the author identity.
* "git commit --no-status" can be used to omit the listing of the index
and the work tree status in the editor used to prepare the log message.
* "git commit" warns a bit more aggressively until you configure user.email,
whose default value almost always is not (and fundamentally cannot be)
what you want.
* "git difftool" has been extended to make it easier to integrate it
with gitk.
* "git fetch --all" can now be used in place of "git remote update".
* "git grep" does not rely on external grep anymore.
* "git grep" learned "--no-index" option, to search inside contents that
are not managed by git.
* "git log" and friends learned "--glob=heads/*" syntax that is a more
flexible way to complement "--branches/--tags/--remotes".
* "git merge" learned to pass options specific to strategy-backends. E.g.
- "git merge -Xsubtree=path/to/directory" can be used to tell the subtree
strategy how much to shift the trees explicitly.
- "git merge -Xtheirs" can be used to auto-merge as much as possible,
while discarding your own changes and taking merged version in
conflicted regions.
* "git push" learned "git push origin --delete branch", a syntactic sugar
for "git push origin :branch".
* "git push" learned "git push --set-upstream origin forker:forkee" that
lets you configure your "forker" branch to later pull from "forkee"
branch at "origin".
* "git rebase --onto A...B" means the history is replayed on top of the
merge base between A and B.
* "git rebase -i" learned new action "fixup", that squashes the change
but does not affect existing log message.
* "git rebase -i" also learned --autosquash option, that is useful
together with the new "fixup" action.
* "git remote" learned set-url subcommand, to update (surprise!) url
for an existing remote nickname.
* "git rerere" learned "forget path" subcommand. Together with "git
checkout -m path" it will be useful when you recorded a wrong
resolution.
* Use of "git reset --merge" has become easier when resetting away a
conflicted mess left in the work tree.
* "git rerere" had rerere.autoupdate configuration but there was no way
to countermand it from the command line; --no-rerere-autoupdate option
given to "merge", "revert", etc. fixes this.
* "git status" learned "-s(hort)" output format.
(developers)
* The infrastructure to build foreign SCM interface has been updated.
* Many more commands are now built-in.
Fixes since v1.6.6
------------------
All of the fixes in v1.6.6.X maintenance series are included in this
release, unless otherwise noted.
* "git branch -d branch" used to refuse deleting the branch even when
the branch is fully merged to its upstream branch if it is not merged
to the current branch. It now deletes it in such a case.
* When "git diff" is asked to compare the work tree with something,
it used to consider that a checked-out submodule with uncommitted
changes is not modified; this could cause people to forget committing
these changes in the submodule before committing in the superproject.
It now considers such a change as a modification.
--
exec >/var/tmp/1
O=v1.6.6.1-434-g3521c1b
echo O=$(git describe master)
git shortlog --no-merges $O..master ^maint

View File

@ -64,7 +64,7 @@ The values following the equals sign in variable assign are all either
a string, an integer, or a boolean. Boolean values may be given as yes/no, a string, an integer, or a boolean. Boolean values may be given as yes/no,
0/1, true/false or on/off. Case is not significant in boolean values, when 0/1, true/false or on/off. Case is not significant in boolean values, when
converting value to the canonical form using '--bool' type specifier; converting value to the canonical form using '--bool' type specifier;
'git-config' will ensure that the output is "true" or "false". 'git config' will ensure that the output is "true" or "false".
String values may be entirely or partially enclosed in double quotes. String values may be entirely or partially enclosed in double quotes.
You need to enclose variable values in double quotes if you want to You need to enclose variable values in double quotes if you want to
@ -130,6 +130,14 @@ advice.*::
Advice shown when linkgit:git-merge[1] refuses to Advice shown when linkgit:git-merge[1] refuses to
merge to avoid overwritting local changes. merge to avoid overwritting local changes.
Default: true. Default: true.
resolveConflict::
Advices shown by various commands when conflicts
prevent the operation from being performed.
Default: true.
implicitIdentity::
Advice on how to set your identity configuration when
your information is guessed from the system username and
domain name. Default: true.
-- --
core.fileMode:: core.fileMode::
@ -442,8 +450,8 @@ core.pager::
core.whitespace:: core.whitespace::
A comma separated list of common whitespace problems to A comma separated list of common whitespace problems to
notice. 'git-diff' will use `color.diff.whitespace` to notice. 'git diff' will use `color.diff.whitespace` to
highlight them, and 'git-apply --whitespace=error' will highlight them, and 'git apply --whitespace=error' will
consider them as errors. You can prefix `-` to disable consider them as errors. You can prefix `-` to disable
any of them (e.g. `-trailing-space`): any of them (e.g. `-trailing-space`):
+ +
@ -502,8 +510,12 @@ notes should be printed.
This setting defaults to "refs/notes/commits", and can be overridden by This setting defaults to "refs/notes/commits", and can be overridden by
the `GIT_NOTES_REF` environment variable. the `GIT_NOTES_REF` environment variable.
core.sparseCheckout::
Enable "sparse checkout" feature. See section "Sparse checkout" in
linkgit:git-read-tree[1] for more information.
add.ignore-errors:: add.ignore-errors::
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]. option of linkgit:git-add[1].
@ -525,19 +537,19 @@ executed from the top-level directory of a repository, which may
not necessarily be the current directory. not necessarily be the current directory.
apply.ignorewhitespace:: apply.ignorewhitespace::
When set to 'change', tells 'git-apply' to ignore changes in When set to 'change', tells 'git apply' to ignore changes in
whitespace, in the same way as the '--ignore-space-change' whitespace, in the same way as the '--ignore-space-change'
option. option.
When set to one of: no, none, never, false tells 'git-apply' to When set to one of: no, none, never, false tells 'git apply' to
respect all whitespace differences. respect all whitespace differences.
See linkgit:git-apply[1]. See linkgit:git-apply[1].
apply.whitespace:: apply.whitespace::
Tells 'git-apply' how to handle whitespaces, in the same way Tells 'git apply' how to handle whitespaces, in the same way
as the '--whitespace' option. See linkgit:git-apply[1]. as the '--whitespace' option. See linkgit:git-apply[1].
branch.autosetupmerge:: branch.autosetupmerge::
Tells 'git-branch' and 'git-checkout' to set up new branches Tells 'git branch' and 'git checkout' to set up new branches
so that linkgit:git-pull[1] will appropriately merge from the so that linkgit:git-pull[1] will appropriately merge from the
starting point branch. Note that even if this option is not set, starting point branch. Note that even if this option is not set,
this behavior can be chosen per-branch using the `--track` this behavior can be chosen per-branch using the `--track`
@ -548,7 +560,7 @@ branch.autosetupmerge::
branch. This option defaults to true. branch. This option defaults to true.
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.
@ -563,24 +575,24 @@ branch.autosetuprebase::
This option defaults to never. This option defaults to never.
branch.<name>.remote:: branch.<name>.remote::
When in branch <name>, it tells 'git-fetch' and 'git-push' which When in branch <name>, it tells 'git fetch' and 'git push' which
remote to fetch from/push to. It defaults to `origin` if no remote is remote to fetch from/push to. It defaults to `origin` if no remote is
configured. `origin` is also used if you are not on any branch. configured. `origin` is also used if you are not on any branch.
branch.<name>.merge:: branch.<name>.merge::
Defines, together with branch.<name>.remote, the upstream branch Defines, together with branch.<name>.remote, the upstream branch
for the given branch. It tells 'git-fetch'/'git-pull' which for the given branch. It tells 'git fetch'/'git pull' which
branch to merge and can also affect 'git-push' (see push.default). branch to merge and can also affect 'git push' (see push.default).
When in branch <name>, it tells 'git-fetch' the default When in branch <name>, it tells 'git fetch' the default
refspec to be marked for merging in FETCH_HEAD. The value is refspec to be marked for merging in FETCH_HEAD. The value is
handled like the remote part of a refspec, and must match a handled like the remote part of a refspec, and must match a
ref which is fetched from the remote given by ref which is fetched from the remote given by
"branch.<name>.remote". "branch.<name>.remote".
The merge information is used by 'git-pull' (which at first calls The merge information is used by 'git pull' (which at first calls
'git-fetch') to lookup the default branch for merging. Without 'git fetch') to lookup the default branch for merging. Without
this option, 'git-pull' defaults to merge the first refspec fetched. this option, 'git pull' defaults to merge the first refspec fetched.
Specify multiple values to get an octopus merge. Specify multiple values to get an octopus merge.
If you wish to setup 'git-pull' so that it merges into <name> from If you wish to setup 'git pull' so that it merges into <name> from
another branch in the local repository, you can point another branch in the local repository, you can point
branch.<name>.merge to the desired branch, and use the special setting branch.<name>.merge to the desired branch, and use the special setting
`.` (a period) for branch.<name>.remote. `.` (a period) for branch.<name>.remote.
@ -652,14 +664,6 @@ color.grep::
`never`), never. When set to `true` or `auto`, use color only `never`), never. When set to `true` or `auto`, use color only
when the output is written to the terminal. Defaults to `false`. when the output is written to the terminal. Defaults to `false`.
color.grep.external::
The string value of this variable is passed to an external 'grep'
command as a command line option if match highlighting is turned
on. If set to an empty string, no option is passed at all,
turning off coloring for external 'grep' calls; this is the default.
For GNU grep, set it to `--color=always` to highlight matches even
when a pager is used.
color.grep.match:: color.grep.match::
Use customized color for matches. The value of this variable Use customized color for matches. The value of this variable
may be specified as in color.branch.<slot>. It is passed using may be specified as in color.branch.<slot>. It is passed using
@ -673,7 +677,7 @@ color.interactive::
colors only when the output is to the terminal. Defaults to false. colors only when the output is to the terminal. Defaults to false.
color.interactive.<slot>:: color.interactive.<slot>::
Use customized color for 'git-add --interactive' Use customized color for 'git add --interactive'
output. `<slot>` may be `prompt`, `header`, `help` or `error`, for output. `<slot>` may be `prompt`, `header`, `help` or `error`, for
four distinct types of normal output from interactive four distinct types of normal output from interactive
commands. The values of these variables may be specified as commands. The values of these variables may be specified as
@ -712,20 +716,25 @@ color.ui::
terminal. When more specific variables of color.* are set, they always terminal. When more specific variables of color.* are set, they always
take precedence over this setting. Defaults to false. take precedence over this setting. Defaults to false.
commit.status::
A boolean to enable/disable inclusion of status information in the
commit message template when using an editor to prepare the commit
message. Defaults to true.
commit.template:: commit.template::
Specify a file to use as the template for new commit messages. Specify a file to use as the template for new commit messages.
"{tilde}/" is expanded to the value of `$HOME` and "{tilde}user/" to the "{tilde}/" is expanded to the value of `$HOME` and "{tilde}user/" to the
specified user's home directory. specified user's home directory.
diff.autorefreshindex:: diff.autorefreshindex::
When using 'git-diff' to compare with work tree When using 'git diff' to compare with work tree
files, do not consider stat-only change as changed. files, do not consider stat-only change as changed.
Instead, silently run `git update-index --refresh` to Instead, silently run `git update-index --refresh` to
update the cached stat information for paths whose update the cached stat information for paths whose
contents in the work tree match the contents in the contents in the work tree match the contents in the
index. This option defaults to true. Note that this index. This option defaults to true. Note that this
affects only 'git-diff' Porcelain, and not lower level affects only 'git diff' Porcelain, and not lower level
'diff' commands such as 'git-diff-files'. 'diff' commands such as 'git diff-files'.
diff.external:: diff.external::
If this config variable is set, diff generation is not If this config variable is set, diff generation is not
@ -737,24 +746,24 @@ diff.external::
your files, you might want to use linkgit:gitattributes[5] instead. your files, you might want to use linkgit:gitattributes[5] instead.
diff.mnemonicprefix:: diff.mnemonicprefix::
If set, 'git-diff' uses a prefix pair that is different from the If set, 'git diff' uses a prefix pair that is different from the
standard "a/" and "b/" depending on what is being compared. When standard "a/" and "b/" depending on what is being compared. When
this configuration is in effect, reverse diff output also swaps this configuration is in effect, reverse diff output also swaps
the order of the prefixes: the order of the prefixes:
'git-diff';; `git diff`;;
compares the (i)ndex and the (w)ork tree; compares the (i)ndex and the (w)ork tree;
'git-diff HEAD';; `git diff HEAD`;;
compares a (c)ommit and the (w)ork tree; compares a (c)ommit and the (w)ork tree;
'git diff --cached';; `git diff --cached`;;
compares a (c)ommit and the (i)ndex; compares a (c)ommit and the (i)ndex;
'git-diff HEAD:file1 file2';; `git diff HEAD:file1 file2`;;
compares an (o)bject and a (w)ork tree entity; compares an (o)bject and a (w)ork tree entity;
'git diff --no-index a b';; `git diff --no-index a b`;;
compares two non-git things (1) and (2). compares two non-git things (1) and (2).
diff.renameLimit:: diff.renameLimit::
The number of files to consider when performing the copy/rename The number of files to consider when performing the copy/rename
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
@ -840,7 +849,7 @@ format.pretty::
linkgit:git-whatchanged[1]. linkgit:git-whatchanged[1].
format.thread:: format.thread::
The default threading style for 'git-format-patch'. Can be The default threading style for 'git format-patch'. Can be
a boolean value, or `shallow` or `deep`. `shallow` threading a boolean value, or `shallow` or `deep`. `shallow` threading
makes every mail a reply to the head of the series, makes every mail a reply to the head of the series,
where the head is chosen from the cover letter, the where the head is chosen from the cover letter, the
@ -858,7 +867,7 @@ format.signoff::
gc.aggressiveWindow:: gc.aggressiveWindow::
The window size parameter used in the delta compression The window size parameter used in the delta compression
algorithm used by 'git-gc --aggressive'. This defaults algorithm used by 'git gc --aggressive'. This defaults
to 10. to 10.
gc.auto:: gc.auto::
@ -878,33 +887,33 @@ gc.packrefs::
Running `git pack-refs` in a repository renders it Running `git pack-refs` in a repository renders it
unclonable by Git versions prior to 1.5.1.2 over dumb unclonable by Git versions prior to 1.5.1.2 over dumb
transports such as HTTP. This variable determines whether transports such as HTTP. This variable determines whether
'git gc' runs `git pack-refs`. This can be set to "nobare" 'git gc' runs `git pack-refs`. This can be set to `nobare`
to enable it within all non-bare repos or it can be set to a to enable it within all non-bare repos or it can be set to a
boolean value. The default is `true`. boolean value. The default is `true`.
gc.pruneexpire:: gc.pruneexpire::
When 'git-gc' is run, it will call 'prune --expire 2.weeks.ago'. When 'git gc' is run, it will call 'prune --expire 2.weeks.ago'.
Override the grace period with this config variable. The value Override the grace period with this config variable. The value
"now" may be used to disable this grace period and always prune "now" may be used to disable this grace period and always prune
unreachable objects immediately. unreachable objects immediately.
gc.reflogexpire:: gc.reflogexpire::
'git-reflog expire' removes reflog entries older than 'git reflog expire' removes reflog entries older than
this time; defaults to 90 days. this time; defaults to 90 days.
gc.reflogexpireunreachable:: gc.reflogexpireunreachable::
'git-reflog expire' removes reflog entries older than 'git reflog expire' removes reflog entries older than
this time and are not reachable from the current tip; this time and are not reachable from the current tip;
defaults to 30 days. defaults to 30 days.
gc.rerereresolved:: gc.rerereresolved::
Records of conflicted merge you resolved earlier are Records of conflicted merge you resolved earlier are
kept for this many days when 'git-rerere gc' is run. kept for this many days when 'git rerere gc' is run.
The default is 60 days. See linkgit:git-rerere[1]. The default is 60 days. See linkgit:git-rerere[1].
gc.rerereunresolved:: gc.rerereunresolved::
Records of conflicted merge you have not resolved are Records of conflicted merge you have not resolved are
kept for this many days when 'git-rerere gc' is run. kept for this many days when 'git rerere gc' is run.
The default is 15 days. See linkgit:git-rerere[1]. The default is 15 days. See linkgit:git-rerere[1].
gitcvs.commitmsgannotation:: gitcvs.commitmsgannotation::
@ -1012,7 +1021,7 @@ gui.spellingdictionary::
off. off.
gui.fastcopyblame:: gui.fastcopyblame::
If true, 'git gui blame' uses '-C' instead of '-C -C' for original If true, 'git gui blame' uses `-C` instead of `-C -C` for original
location detection. It makes blame significantly faster on huge location detection. It makes blame significantly faster on huge
repositories at the expense of less thorough copy detection. repositories at the expense of less thorough copy detection.
@ -1136,6 +1145,12 @@ http.maxRequests::
How many HTTP requests to launch in parallel. Can be overridden How many HTTP requests to launch in parallel. Can be overridden
by the 'GIT_HTTP_MAX_REQUESTS' environment variable. Default is 5. by the 'GIT_HTTP_MAX_REQUESTS' environment variable. Default is 5.
http.minSessions::
The number of curl sessions (counted across slots) to be kept across
requests. They will not be ended with curl_easy_cleanup() until
http_cleanup() is invoked. If USE_CURL_MULTI is not defined, this
value will be capped at 1. Defaults to 1.
http.postBuffer:: http.postBuffer::
Maximum size in bytes of the buffer used by smart HTTP Maximum size in bytes of the buffer used by smart HTTP
transports when POSTing data to the remote system. transports when POSTing data to the remote system.
@ -1165,7 +1180,7 @@ i18n.commitEncoding::
i18n.logOutputEncoding:: i18n.logOutputEncoding::
Character encoding the commit messages are converted to when Character encoding the commit messages are converted to when
running 'git-log' and friends. running 'git log' and friends.
imap:: imap::
The configuration variables in the 'imap' section are described The configuration variables in the 'imap' section are described
@ -1199,7 +1214,7 @@ interactive.singlekey::
log.date:: log.date::
Set default date-time mode for the log command. Setting log.date Set default date-time mode for the log command. Setting log.date
value is similar to using 'git-log'\'s --date option. The value is one of the value is similar to using 'git log'\'s --date option. The value is one of the
following alternatives: {relative,local,default,iso,rfc,short}. following alternatives: {relative,local,default,iso,rfc,short}.
See linkgit:git-log[1]. See linkgit:git-log[1].
@ -1465,6 +1480,10 @@ remote.<name>.tagopt::
Setting this value to \--no-tags disables automatic tag following when Setting this value to \--no-tags disables automatic tag following when
fetching from remote <name> fetching from remote <name>
remote.<name>.vcs::
Setting this to a value <vcs> will cause git to interact with
the remote with the git-remote-<vcs> helper.
remotes.<group>:: remotes.<group>::
The list of remotes which are fetched by "git remote update The list of remotes which are fetched by "git remote update
<group>". See linkgit:git-remote[1]. <group>". See linkgit:git-remote[1].

View File

@ -0,0 +1,26 @@
DATE FORMATS
------------
The GIT_AUTHOR_DATE, GIT_COMMITTER_DATE environment variables
ifdef::git-commit[]
and the `--date` option
endif::git-commit[]
support the following date formats:
Git internal format::
It is `<unix timestamp> <timezone offset>`, where `<unix
timestamp>` is the number of seconds since the UNIX epoch.
`<timezone offset>` is a positive or negative offset from UTC.
For example CET (which is 2 hours ahead UTC) is `+0200`.
RFC 2822::
The standard email format as described by RFC 2822, for example
`Thu, 07 Apr 2005 22:13:13 +0200`.
ISO 8601::
Time and date specified by the ISO 8601 standard, for example
`2005-04-07T22:13:13`. The parser accepts a space instead of the
`T` character as well.
+
NOTE: In addition, the date part is accepted in the following formats:
`YYYY.MM.DD`, `MM/DD/YYYY` and `DD.MM.YYYY`.

View File

@ -19,7 +19,7 @@ endif::git-pull[]
-f:: -f::
--force:: --force::
When 'git-fetch' is used with `<rbranch>:<lbranch>` When 'git fetch' is used with `<rbranch>:<lbranch>`
refspec, it refuses to update the local branch refspec, it refuses to update the local branch
`<lbranch>` unless the remote branch `<rbranch>` it `<lbranch>` unless the remote branch `<rbranch>` it
fetches is a descendant of `<lbranch>`. This option fetches is a descendant of `<lbranch>`. This option
@ -61,16 +61,16 @@ endif::git-pull[]
-u:: -u::
--update-head-ok:: --update-head-ok::
By default 'git-fetch' refuses to update the head which By default 'git fetch' refuses to update the head which
corresponds to the current branch. This flag disables the corresponds to the current branch. This flag disables the
check. This is purely for the internal use for 'git-pull' check. This is purely for the internal use for 'git pull'
to communicate with 'git-fetch', and unless you are to communicate with 'git fetch', and unless you are
implementing your own Porcelain you are not supposed to implementing your own Porcelain you are not supposed to
use it. use it.
--upload-pack <upload-pack>:: --upload-pack <upload-pack>::
When given, and the repository to fetch from is handled When given, and the repository to fetch from is handled
by 'git-fetch-pack', '--exec=<upload-pack>' is passed to by 'git fetch-pack', '--exec=<upload-pack>' is passed to
the command to specify non-default path for the command the command to specify non-default path for the command
run on the other end. run on the other end.

View File

@ -39,7 +39,7 @@ The `git add` command will not add ignored files by default. If any
ignored files were explicitly specified on the command line, `git add` ignored files were explicitly specified on the command line, `git add`
will fail with a list of ignored files. Ignored files reached by will fail with a list of ignored files. Ignored files reached by
directory recursion or filename globbing performed by Git (quote your directory recursion or filename globbing performed by Git (quote your
globs before the shell) will be silently ignored. The `add` command can globs before the shell) will be silently ignored. The 'git add' command can
be used to add ignored files with the `-f` (force) option. be used to add ignored files with the `-f` (force) option.
Please see linkgit:git-commit[1] for alternative ways to add content to a Please see linkgit:git-commit[1] for alternative ways to add content to a

View File

@ -37,7 +37,7 @@ OPTIONS
-k:: -k::
--keep:: --keep::
Pass `-k` flag to 'git-mailinfo' (see linkgit:git-mailinfo[1]). Pass `-k` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]).
-c:: -c::
--scissors:: --scissors::
@ -53,7 +53,7 @@ OPTIONS
-u:: -u::
--utf8:: --utf8::
Pass `-u` flag to 'git-mailinfo' (see linkgit:git-mailinfo[1]). Pass `-u` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]).
The proposed commit log message taken from the e-mail The proposed commit log message taken from the e-mail
is re-coded into UTF-8 encoding (configuration variable is re-coded into UTF-8 encoding (configuration variable
`i18n.commitencoding` can be used to specify project's `i18n.commitencoding` can be used to specify project's
@ -63,7 +63,7 @@ This was optional in prior versions of git, but now it is the
default. You can use `--no-utf8` to override this. default. You can use `--no-utf8` to override this.
--no-utf8:: --no-utf8::
Pass `-n` flag to 'git-mailinfo' (see Pass `-n` flag to 'git mailinfo' (see
linkgit:git-mailinfo[1]). linkgit:git-mailinfo[1]).
-3:: -3::
@ -81,7 +81,7 @@ default. You can use `--no-utf8` to override this.
-p<n>:: -p<n>::
--directory=<dir>:: --directory=<dir>::
--reject:: --reject::
These flags are passed to the 'git-apply' (see linkgit:git-apply[1]) These flags are passed to the 'git apply' (see linkgit:git-apply[1])
program that applies program that applies
the patch. the patch.
@ -121,7 +121,7 @@ default. You can use `--no-utf8` to override this.
to the screen before exiting. This overrides the to the screen before exiting. This overrides the
standard message informing you to use `--resolved` standard message informing you to use `--resolved`
or `--skip` to handle the failure. This is solely or `--skip` to handle the failure. This is solely
for internal use between 'git-rebase' and 'git-am'. for internal use between 'git rebase' and 'git am'.
--abort:: --abort::
Restore the original branch and abort the patching operation. Restore the original branch and abort the patching operation.

View File

@ -69,7 +69,7 @@ OPTIONS
without using the working tree. This implies `--index`. without using the working tree. This implies `--index`.
--build-fake-ancestor=<file>:: --build-fake-ancestor=<file>::
Newer 'git-diff' output has embedded 'index information' Newer 'git diff' output has embedded 'index information'
for each blob to help identify the original version that for each blob to help identify the original version that
the patch applies to. When this flag is given, and if the patch applies to. When this flag is given, and if
the original versions of the blobs are available locally, the original versions of the blobs are available locally,
@ -83,7 +83,7 @@ the information is read from the current index instead.
Apply the patch in reverse. Apply the patch in reverse.
--reject:: --reject::
For atomicity, 'git-apply' by default fails the whole patch and For atomicity, 'git apply' by default fails the whole patch and
does not touch the working tree when some of the hunks does not touch the working tree when some of the hunks
do not apply. This option makes it apply do not apply. This option makes it apply
the parts of the patch that are applicable, and leave the the parts of the patch that are applicable, and leave the
@ -109,7 +109,7 @@ any of those replacements occurred.
ever ignored. ever ignored.
--unidiff-zero:: --unidiff-zero::
By default, 'git-apply' expects that the patch being By default, 'git apply' expects that the patch being
applied is a unified diff with at least one line of context. applied is a unified diff with at least one line of context.
This provides good safety measures, but breaks down when This provides good safety measures, but breaks down when
applying a diff generated with `--unified=0`. To bypass these applying a diff generated with `--unified=0`. To bypass these
@ -120,7 +120,7 @@ discouraged.
--apply:: --apply::
If you use any of the options marked "Turns off If you use any of the options marked "Turns off
'apply'" above, 'git-apply' reads and outputs the 'apply'" above, 'git apply' reads and outputs the
requested information without actually applying the requested information without actually applying the
patch. Give this flag after those flags to also apply patch. Give this flag after those flags to also apply
the patch. the patch.
@ -229,7 +229,7 @@ apply.whitespace::
Submodules Submodules
---------- ----------
If the patch contains any changes to submodules then 'git-apply' If the patch contains any changes to submodules then 'git apply'
treats these changes as follows. treats these changes as follows.
If `--index` is specified (explicitly or implicitly), then the submodule If `--index` is specified (explicitly or implicitly), then the submodule

View File

@ -29,17 +29,17 @@ branches that have different roots, it will refuse to run. In that case,
edit your <archive/branch> parameters to define clearly the scope of the edit your <archive/branch> parameters to define clearly the scope of the
import. import.
'git-archimport' uses `tla` extensively in the background to access the 'git archimport' uses `tla` extensively in the background to access the
Arch repository. Arch repository.
Make sure you have a recent version of `tla` available in the path. `tla` must Make sure you have a recent version of `tla` available in the path. `tla` must
know about the repositories you pass to 'git-archimport'. know about the repositories you pass to 'git archimport'.
For the initial import, 'git-archimport' expects to find itself in an empty For the initial import, 'git archimport' expects to find itself in an empty
directory. To follow the development of a project that uses Arch, rerun directory. To follow the development of a project that uses Arch, rerun
'git-archimport' with the same parameters as the initial import to perform 'git archimport' with the same parameters as the initial import to perform
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
@ -84,7 +84,7 @@ OPTIONS
-o:: -o::
Use this for compatibility with old-style branch names used by Use this for compatibility with old-style branch names used by
earlier versions of 'git-archimport'. Old-style branch names earlier versions of 'git archimport'. Old-style branch names
were category--branch, whereas new-style branch names are were category--branch, whereas new-style branch names are
archive,category--branch--version. In both cases, names given archive,category--branch--version. In both cases, names given
on the command-line will override the automatically-generated on the command-line will override the automatically-generated

View File

@ -21,13 +21,13 @@ structure for the named tree, and writes it out to the standard
output. If <prefix> is specified it is output. If <prefix> is specified it is
prepended to the filenames in the archive. prepended to the filenames in the archive.
'git-archive' behaves differently when given a tree ID versus when 'git archive' behaves differently when given a tree ID versus when
given a commit ID or tag ID. In the first case the current time is given a commit ID or tag ID. In the first case the current time is
used as the modification time of each file in the archive. In the latter used as the modification time of each file in the archive. In the latter
case the commit time as recorded in the referenced commit object is case the commit time as recorded in the referenced commit object is
used instead. Additionally the commit ID is stored in a global used instead. Additionally the commit ID is stored in a global
extended pax header if the tar format is used; it can be extracted extended pax header if the tar format is used; it can be extracted
using 'git-get-tar-commit-id'. In ZIP files it is stored as a file using 'git get-tar-commit-id'. In ZIP files it is stored as a file
comment. comment.
OPTIONS OPTIONS

View File

@ -21,7 +21,7 @@ last modified the line. Optionally, start annotating from the given revision.
The command can also limit the range of lines annotated. The command can also limit the range of lines annotated.
The report does not tell you anything about lines which have been deleted or 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
@ -49,7 +49,7 @@ include::blame-options.txt[]
file (see `-M`). The first number listed is the score. file (see `-M`). The first number listed is the score.
This is the number of alphanumeric characters detected This is the number of alphanumeric characters detected
as having been moved between or within files. This must be above as having been moved between or within files. This must be above
a certain threshold for 'git-blame' to consider those lines a certain threshold for 'git blame' to consider those lines
of code to have been moved. of code to have been moved.
-f:: -f::
@ -100,7 +100,7 @@ header elements later.
SPECIFYING RANGES SPECIFYING RANGES
----------------- -----------------
Unlike 'git-blame' and 'git-annotate' in older versions of git, the extent Unlike 'git blame' and 'git annotate' in older versions of git, the extent
of the annotation can be limited to both line ranges and revision of the annotation can be limited to both line ranges and revision
ranges. When you are interested in finding the origin for ranges. When you are interested in finding the origin for
lines 40-60 for file `foo`, you can use the `-L` option like so lines 40-60 for file `foo`, you can use the `-L` option like so
@ -118,7 +118,7 @@ which limits the annotation to the body of the `hello` subroutine.
When you are not interested in changes older than version When you are not interested in changes older than version
v2.6.18, or changes older than 3 weeks, you can use revision v2.6.18, or changes older than 3 weeks, you can use revision
range specifiers similar to 'git-rev-list': range specifiers similar to 'git rev-list':
git blame v2.6.18.. -- foo git blame v2.6.18.. -- foo
git blame --since=3.weeks -- foo git blame --since=3.weeks -- foo

View File

@ -11,7 +11,7 @@ SYNOPSIS
'git branch' [--color | --no-color] [-r | -a] 'git branch' [--color | --no-color] [-r | -a]
[-v [--abbrev=<length> | --no-abbrev]] [-v [--abbrev=<length> | --no-abbrev]]
[(--merged | --no-merged | --contains) [<commit>]] [(--merged | --no-merged | --contains) [<commit>]]
'git branch' [--track | --no-track] [-l] [-f] <branchname> [<start-point>] 'git branch' [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
'git branch' (-m | -M) [<oldbranch>] <newbranch> 'git branch' (-m | -M) [<oldbranch>] <newbranch>
'git branch' (-d | -D) [-r] <branchname>... 'git branch' (-d | -D) [-r] <branchname>...
@ -38,7 +38,7 @@ 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 branch, git sets up the When a local branch is started off a remote 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 branch. This behavior may be changed via the global the remote 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
overridden by using the `--track` and `--no-track` options. overridden by using the `--track` and `--no-track` options.
@ -55,7 +55,7 @@ has a reflog then the reflog will also be deleted.
Use -r together with -d to delete remote-tracking branches. Note, that it Use -r together with -d to delete remote-tracking branches. Note, that it
only makes sense to delete remote-tracking branches if they no longer exist only makes sense to delete remote-tracking branches if they no longer exist
in the remote repository or if 'git-fetch' was configured not to fetch in the remote repository or if 'git fetch' was configured not to fetch
them again. See also the 'prune' subcommand of linkgit:git-remote[1] for a them again. See also the 'prune' subcommand of linkgit:git-remote[1] for a
way to clean up all obsolete remote-tracking branches. way to clean up all obsolete remote-tracking branches.
@ -76,7 +76,7 @@ OPTIONS
-f:: -f::
--force:: --force::
Reset <branchname> to <startpoint> if <branchname> exists Reset <branchname> to <startpoint> if <branchname> exists
already. Without `-f` 'git-branch' refuses to change an existing branch. already. Without `-f` 'git branch' refuses to change an existing branch.
-m:: -m::
Move/rename a branch and the corresponding reflog. Move/rename a branch and the corresponding reflog.
@ -129,6 +129,12 @@ start-point is either a local or remote branch.
Do not set up "upstream" configuration, even if the Do not set up "upstream" configuration, even if the
branch.autosetupmerge configuration variable is true. branch.autosetupmerge configuration variable is true.
--set-upstream::
If specified branch does not exist yet or if '--force' has been
given, acts exactly like '--track'. Otherwise sets up configuration
like '--track' would when creating the branch, except that where
branch points to is not changed.
--contains <commit>:: --contains <commit>::
Only list branches which contain the specified commit. Only list branches which contain the specified commit.

View File

@ -21,9 +21,9 @@ 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
another repository using 'git-fetch' and 'git-pull' another repository using 'git fetch' and 'git pull'
after moving the archive by some means (e.g., by sneakernet). As no after moving the archive by some means (e.g., by sneakernet). As no
direct connection between the repositories exists, the user must specify a direct connection between the repositories exists, the user must specify a
basis for the bundle that is held by the destination repository: the basis for the bundle that is held by the destination repository: the
@ -35,14 +35,14 @@ OPTIONS
create <file>:: create <file>::
Used to create a bundle named 'file'. This requires the Used to create a bundle named 'file'. This requires the
'git-rev-list' arguments to define the bundle contents. 'git rev-list' arguments to define the bundle contents.
verify <file>:: verify <file>::
Used to check that a bundle file is valid and will apply Used to check that a bundle file is valid and will apply
cleanly to the current repository. This includes checks on the cleanly to the current repository. This includes checks on the
bundle format itself as well as checking that the prerequisite bundle format itself as well as checking that the prerequisite
commits exist and are fully linked in the current repository. commits exist and are fully linked in the current repository.
'git-bundle' prints a list of missing commits, if any, and exits 'git bundle' prints a list of missing commits, if any, and exits
with a non-zero status. with a non-zero status.
list-heads <file>:: list-heads <file>::
@ -51,15 +51,15 @@ list-heads <file>::
printed out. printed out.
unbundle <file>:: unbundle <file>::
Passes the objects in the bundle to 'git-index-pack' Passes the objects in the bundle to 'git index-pack'
for storage in the repository, then prints the names of all for storage in the repository, then prints the names of all
defined references. If a list of references is given, only defined references. If a list of references is given, only
references matching those in the list are printed. This command is references matching those in the list are printed. This command is
really plumbing, intended to be called only by 'git-fetch'. really plumbing, intended to be called only by 'git fetch'.
[git-rev-list-args...]:: [git-rev-list-args...]::
A list of arguments, acceptable to 'git-rev-parse' and A list of arguments, acceptable to 'git rev-parse' and
'git-rev-list', that specifies the specific objects and references 'git rev-list', that specifies the specific objects and references
to transport. For example, `master\~10..master` causes the to transport. For example, `master\~10..master` causes the
current master reference to be packaged along with all objects current master reference to be packaged along with all objects
added since its 10th ancestor commit. There is no explicit added since its 10th ancestor commit. There is no explicit
@ -69,16 +69,16 @@ unbundle <file>::
[refname...]:: [refname...]::
A list of references used to limit the references reported as A list of references used to limit the references reported as
available. This is principally of use to 'git-fetch', which available. This is principally of use to 'git fetch', which
expects to receive only those references asked for and not expects to receive only those references asked for and not
necessarily everything in the pack (in this case, 'git-bundle' acts necessarily everything in the pack (in this case, 'git bundle' acts
like 'git-fetch-pack'). like 'git fetch-pack').
SPECIFYING REFERENCES SPECIFYING REFERENCES
--------------------- ---------------------
'git-bundle' will only package references that are shown by 'git bundle' will only package references that are shown by
'git-show-ref': this includes heads, tags, and remote heads. References 'git show-ref': this includes heads, tags, and remote heads. References
such as `master\~1` cannot be packaged, but are perfectly suitable for such as `master\~1` cannot be packaged, but are perfectly suitable for
defining the basis. More than one reference may be packaged, and more defining the basis. More than one reference may be packaged, and more
than one basis can be specified. The objects packaged are those not than one basis can be specified. The objects packaged are those not

View File

@ -60,7 +60,7 @@ reference name expressions (see linkgit:git-rev-parse[1]):
. A colon `:` is used as in `srcref:dstref` to mean "use srcref\'s . A colon `:` is used as in `srcref:dstref` to mean "use srcref\'s
value and store it in dstref" in fetch and push operations. value and store it in dstref" in fetch and push operations.
It may also be used to select a specific object such as with It may also be used to select a specific object such as with
'git-cat-file': "git cat-file blob v1.3.3:refs.c". 'git cat-file': "git cat-file blob v1.3.3:refs.c".
. at-open-brace `@{` is used as a notation to access a reflog entry. . at-open-brace `@{` is used as a notation to access a reflog entry.

View File

@ -88,7 +88,7 @@ $ find . -name '*.h' -print0 | xargs -0 git checkout-index -f --
which will force all existing `*.h` files to be replaced with their which will force all existing `*.h` files to be replaced with their
cached copies. If an empty command line implied "all", then this would cached copies. If an empty command line implied "all", then this would
force-refresh everything in the index, which was not the point. But force-refresh everything in the index, which was not the point. But
since 'git-checkout-index' accepts --stdin it would be faster to use: since 'git checkout-index' accepts --stdin it would be faster to use:
---------------- ----------------
$ find . -name '*.h' -print0 | git checkout-index -f -z --stdin $ find . -name '*.h' -print0 | git checkout-index -f -z --stdin
@ -102,7 +102,7 @@ Using `--` is probably a good policy in scripts.
Using --temp or --stage=all Using --temp or --stage=all
--------------------------- ---------------------------
When `--temp` is used (or implied by `--stage=all`) When `--temp` is used (or implied by `--stage=all`)
'git-checkout-index' will create a temporary file for each index 'git checkout-index' will create a temporary file for each index
entry being checked out. The index will not be updated with stat entry being checked out. The index will not be updated with stat
information. These options can be useful if the caller needs all information. These options can be useful if the caller needs all
stages of all unmerged entries so that the unmerged files can be stages of all unmerged entries so that the unmerged files can be
@ -147,9 +147,9 @@ To update and refresh only the files already checked out::
$ git checkout-index -n -f -a && git update-index --ignore-missing --refresh $ git checkout-index -n -f -a && git update-index --ignore-missing --refresh
---------------- ----------------
Using 'git-checkout-index' to "export an entire tree":: Using 'git checkout-index' to "export an entire tree"::
The prefix ability basically makes it trivial to use The prefix ability basically makes it trivial to use
'git-checkout-index' as an "export as tree" function. 'git checkout-index' as an "export as tree" function.
Just read the desired tree into the index, and do: Just read the desired tree into the index, and do:
+ +
---------------- ----------------

View File

@ -24,7 +24,7 @@ OPTIONS
-e:: -e::
--edit:: --edit::
With this option, 'git-cherry-pick' will let you edit the commit With this option, 'git cherry-pick' will let you edit the commit
message prior to committing. message prior to committing.
-x:: -x::

View File

@ -14,7 +14,7 @@ DESCRIPTION
The changeset (or "diff") of each commit between the fork-point and <head> The changeset (or "diff") of each commit between the fork-point and <head>
is compared against each commit between the fork-point and <upstream>. is compared against each commit between the fork-point and <upstream>.
The commits are compared with their 'patch id', obtained from The commits are compared with their 'patch id', obtained from
the 'git-patch-id' program. the 'git patch-id' program.
Every commit that doesn't exist in the <upstream> branch Every commit that doesn't exist in the <upstream> branch
has its id (sha1) reported, prefixed by a symbol. The ones that have has its id (sha1) reported, prefixed by a symbol. The ones that have
@ -37,8 +37,8 @@ to and including <limit> are not reported:
\__*__*__<limit>__-__+__> <head> \__*__*__<limit>__-__+__> <head>
Because 'git-cherry' compares the changeset rather than the commit id Because 'git cherry' compares the changeset rather than the commit id
(sha1), you can use 'git-cherry' to find out if a commit you made locally (sha1), you can use 'git cherry' to find out if a commit you made locally
has been applied <upstream> under a different commit id. For example, has been applied <upstream> under a different commit id. For example,
this will happen if you're feeding patches <upstream> via email rather this will happen if you're feeding patches <upstream> via email rather
than pushing or pulling commits directly. than pushing or pulling commits directly.

View File

@ -14,9 +14,9 @@ DESCRIPTION
A Tcl/Tk based graphical interface to review modified files, stage A Tcl/Tk based graphical interface to review modified files, stage
them into the index, enter a commit message and record the new them into the index, enter a commit message and record the new
commit onto the current branch. This interface is an alternative commit onto the current branch. This interface is an alternative
to the less interactive 'git-commit' program. to the less interactive 'git commit' program.
'git-citool' is actually a standard alias for `git gui citool`. 'git citool' is actually a standard alias for `git gui citool`.
See linkgit:git-gui[1] for more details. See linkgit:git-gui[1] for more details.
Author Author

View File

@ -34,7 +34,7 @@ OPTIONS
-f:: -f::
--force:: --force::
If the git configuration specifies clean.requireForce as true, If the git configuration specifies clean.requireForce as true,
'git-clean' will refuse to run unless given -f or -n. 'git clean' will refuse to run unless given -f or -n.
-n:: -n::
--dry-run:: --dry-run::
@ -48,7 +48,7 @@ OPTIONS
-x:: -x::
Don't use the ignore rules. This allows removing all untracked Don't use the ignore rules. This allows removing all untracked
files, including build products. This can be used (possibly in files, including build products. This can be used (possibly in
conjunction with 'git-reset') to create a pristine conjunction with 'git reset') to create a pristine
working directory to test a clean build. working directory to test a clean build.
-X:: -X::

View File

@ -96,13 +96,19 @@ objects from the source repository into a pack in the cloned repository.
--quiet:: --quiet::
-q:: -q::
Operate quietly. This flag is also passed to the `rsync' Operate quietly. Progress is not reported to the standard
error stream. This flag is also passed to the `rsync'
command when given. command when given.
--verbose:: --verbose::
-v:: -v::
Display the progress bar, even in case the standard output is not Run verbosely.
a terminal.
--progress::
Progress status is reported on the standard error stream
by default when it is attached to a terminal, unless -q
is specified. This flag forces progress status even if the
standard error stream is not directed to a terminal.
--no-checkout:: --no-checkout::
-n:: -n::

View File

@ -70,9 +70,10 @@ is taken from the configuration items user.name and user.email, or, if not
present, system user name and fully qualified hostname. present, system user name and fully qualified hostname.
A commit comment is read from stdin. If a changelog A commit comment is read from stdin. If a changelog
entry is not provided via "<" redirection, 'git-commit-tree' will just wait entry is not provided via "<" redirection, 'git commit-tree' will just wait
for one to be entered and terminated with ^D. for one to be entered and terminated with ^D.
include::date-formats.txt[]
Diagnostics Diagnostics
----------- -----------

View File

@ -11,7 +11,8 @@ SYNOPSIS
'git commit' [-a | --interactive] [-s] [-v] [-u<mode>] [--amend] [--dry-run] 'git commit' [-a | --interactive] [-s] [-v] [-u<mode>] [--amend] [--dry-run]
[(-c | -C) <commit>] [-F <file> | -m <msg>] [--reset-author] [(-c | -C) <commit>] [-F <file> | -m <msg>] [--reset-author]
[--allow-empty] [--no-verify] [-e] [--author=<author>] [--allow-empty] [--no-verify] [-e] [--author=<author>]
[--cleanup=<mode>] [--] [[-i | -o ]<file>...] [--date=<date>] [--cleanup=<mode>] [--status | --no-status] [--]
[[-i | -o ]<file>...]
DESCRIPTION DESCRIPTION
----------- -----------
@ -20,11 +21,11 @@ with a log message from the user describing the changes.
The content to be added can be specified in several ways: The content to be added can be specified in several ways:
1. by using 'git-add' to incrementally "add" changes to the 1. by using 'git add' to incrementally "add" changes to the
index before using the 'commit' command (Note: even modified index before using the 'commit' command (Note: even modified
files must be "added"); files must be "added");
2. by using 'git-rm' to remove files from the working tree 2. by using 'git rm' to remove files from the working tree
and the index, again before using the 'commit' command; and the index, again before using the 'commit' command;
3. by listing files as arguments to the 'commit' command, in which 3. by listing files as arguments to the 'commit' command, in which
@ -40,14 +41,14 @@ The content to be added can be specified in several ways:
5. by using the --interactive switch with the 'commit' command to decide one 5. by using the --interactive switch with the 'commit' command to decide one
by one which files should be part of the commit, before finalizing the by one which files should be part of the commit, before finalizing the
operation. Currently, this is done by invoking 'git-add --interactive'. operation. Currently, this is done by invoking 'git add --interactive'.
The `--dry-run` option can be used to obtain a The `--dry-run` option can be used to obtain a
summary of what is included by any of the above for the next summary of what is included by any of the above for the next
commit by giving the same set of parameters (options and paths). commit by giving the same set of parameters (options and paths).
If you make a commit and then find a mistake immediately after If you make a commit and then find a mistake immediately after
that, you can recover from it with 'git-reset'. that, you can recover from it with 'git reset'.
OPTIONS OPTIONS
@ -74,6 +75,20 @@ OPTIONS
authorship of the resulting commit now belongs of the committer. authorship of the resulting commit now belongs of the committer.
This also renews the author timestamp. This also renews the author timestamp.
--short::
When doing a dry-run, give the output in the short-format. See
linkgit:git-status[1] for details. Implies `--dry-run`.
--porcelain::
When doing a dry-run, give the output in a porcelain-ready
format. See linkgit:git-status[1] for details. Implies
`--dry-run`.
-z::
When showing `short` or `porcelain` status output, terminate
entries in the status output with NUL, instead of LF. If no
format is given, implies the `--porcelain` output format.
-F <file>:: -F <file>::
--file=<file>:: --file=<file>::
Take the commit message from the given file. Use '-' to Take the commit message from the given file. Use '-' to
@ -85,6 +100,9 @@ OPTIONS
an existing commit that matches the given string and its author an existing commit that matches the given string and its author
name is used. name is used.
--date=<date>::
Override the author date used in the commit.
-m <msg>:: -m <msg>::
--message=<msg>:: --message=<msg>::
Use the given <msg> as the commit message. Use the given <msg> as the commit message.
@ -167,7 +185,7 @@ FROM UPSTREAM REBASE" section in linkgit:git-rebase[1].)
Make a commit only from the paths specified on the Make a commit only from the paths specified on the
command line, disregarding any contents that have been command line, disregarding any contents that have been
staged so far. This is the default mode of operation of staged so far. This is the default mode of operation of
'git-commit' if any paths are given on the command line, 'git commit' if any paths are given on the command line,
in which case this option can be omitted. in which case this option can be omitted.
If this option is specified together with '--amend', then If this option is specified together with '--amend', then
no paths need to be specified, which can be used to amend no paths need to be specified, which can be used to amend
@ -207,6 +225,17 @@ specified.
to be committed, paths with local changes that will be left to be committed, paths with local changes that will be left
uncommitted and paths that are untracked. uncommitted and paths that are untracked.
--status::
Include the output of linkgit:git-status[1] in the commit
message template when using an editor to prepare the commit
message. Defaults to on, but can be used to override
configuration variable commit.status.
--no-status::
Do not include the output of linkgit:git-status[1] in the
commit message template when using an editor to prepare the
default commit message.
\--:: \--::
Do not interpret any more arguments as options. Do not interpret any more arguments as options.
@ -217,15 +246,17 @@ specified.
these files are also staged for the next commit on top these files are also staged for the next commit on top
of what have been staged before. of what have been staged before.
:git-commit: 1
include::date-formats.txt[]
EXAMPLES EXAMPLES
-------- --------
When recording your own work, the contents of modified files in When recording your own work, the contents of modified files in
your working tree are temporarily stored to a staging area your working tree are temporarily stored to a staging area
called the "index" with 'git-add'. A file can be called the "index" with 'git add'. A file can be
reverted back, only in the index but not in the working tree, reverted back, only in the index but not in the working tree,
to that of the last commit with `git reset HEAD -- <file>`, to that of the last commit with `git reset HEAD -- <file>`,
which effectively reverts 'git-add' and prevents the changes to which effectively reverts 'git add' and prevents the changes to
this file from participating in the next commit. After building this file from participating in the next commit. After building
the state to be committed incrementally with these commands, the state to be committed incrementally with these commands,
`git commit` (without any pathname parameter) is used to record what `git commit` (without any pathname parameter) is used to record what
@ -281,13 +312,13 @@ $ git commit
this second commit would record the changes to `hello.c` and this second commit would record the changes to `hello.c` and
`hello.h` as expected. `hello.h` as expected.
After a merge (initiated by 'git-merge' or 'git-pull') stops After a merge (initiated by 'git merge' or 'git pull') stops
because of conflicts, cleanly merged because of conflicts, cleanly merged
paths are already staged to be committed for you, and paths that paths are already staged to be committed for you, and paths that
conflicted are left in unmerged state. You would have to first conflicted are left in unmerged state. You would have to first
check which paths are conflicting with 'git-status' check which paths are conflicting with 'git status'
and after fixing them manually in your working tree, you would and after fixing them manually in your working tree, you would
stage the result as usual with 'git-add': stage the result as usual with 'git add':
------------ ------------
$ git status | grep unmerged $ git status | grep unmerged

View File

@ -37,11 +37,12 @@ existing values that match the regexp are updated or unset. If
you want to handle the lines that do *not* match the regex, just you want to handle the lines that do *not* match the regex, just
prepend a single exclamation mark in front (see also <<EXAMPLES>>). prepend a single exclamation mark in front (see also <<EXAMPLES>>).
The type specifier can be either '--int' or '--bool', which will make The type specifier can be either '--int' or '--bool', to make
'git-config' ensure that the variable(s) are of the given type and 'git config' ensure that the variable(s) are of the given type and
convert the value to the canonical form (simple decimal number for int, convert the value to the canonical form (simple decimal number for int,
a "true" or "false" string for bool). If no type specifier is passed, a "true" or "false" string for bool), or '--path', which does some
no checks or transformations are performed on the value. path expansion (see '--path' below). If no type specifier is passed, no
checks or transformations are performed on the value.
The file-option can be one of '--system', '--global' or '--file' The file-option can be one of '--system', '--global' or '--file'
which specify where the values will be read from or written to. which specify where the values will be read from or written to.
@ -124,18 +125,25 @@ See also <<FILES>>.
List all variables set in config file. List all variables set in config file.
--bool:: --bool::
'git-config' will ensure that the output is "true" or "false" 'git config' will ensure that the output is "true" or "false"
--int:: --int::
'git-config' will ensure that the output is a simple 'git config' will ensure that the output is a simple
decimal number. An optional value suffix of 'k', 'm', or 'g' decimal number. An optional value suffix of 'k', 'm', or 'g'
in the config file will cause the value to be multiplied in the config file will cause the value to be multiplied
by 1024, 1048576, or 1073741824 prior to output. by 1024, 1048576, or 1073741824 prior to output.
--bool-or-int:: --bool-or-int::
'git-config' will ensure that the output matches the format of 'git config' will ensure that the output matches the format of
either --bool or --int, as described above. either --bool or --int, as described above.
--path::
'git-config' will expand leading '{tilde}' to the value of
'$HOME', and '{tilde}user' to the home directory for the
specified user. This option has no effect when setting the
value (but you can use 'git config bla {tilde}/' from the
command line to let your shell do the expansion).
-z:: -z::
--null:: --null::
For all options that output values and/or keys, always For all options that output values and/or keys, always
@ -173,7 +181,7 @@ FILES
----- -----
If not set explicitly with '--file', there are three files where If not set explicitly with '--file', there are three files where
'git-config' will search for configuration options: 'git config' will search for configuration options:
$GIT_DIR/config:: $GIT_DIR/config::
Repository specific configuration file. (The filename is Repository specific configuration file. (The filename is
@ -190,12 +198,12 @@ $(prefix)/etc/gitconfig::
If no further options are given, all reading options will read all of these If no further options are given, all reading options will read all of these
files that are available. If the global or the system-wide configuration files that are available. If the global or the system-wide configuration
file are not available they will be ignored. If the repository configuration file are not available they will be ignored. If the repository configuration
file is not available or readable, 'git-config' will exit with a non-zero file is not available or readable, 'git config' will exit with a non-zero
error code. However, in neither case will an error message be issued. error code. However, in neither case will an error message be issued.
All writing options will per default write to the repository specific All writing options will per default write to the repository specific
configuration file. Note that this also affects options like '--replace-all' configuration file. Note that this also affects options like '--replace-all'
and '--unset'. *'git-config' will only ever change one file at a time*. and '--unset'. *'git config' will only ever change one file at a time*.
You can override these rules either by command line options or by environment You can override these rules either by command line options or by environment
variables. The '--global' and the '--system' options will limit the file used variables. The '--global' and the '--system' options will limit the file used

View File

@ -27,7 +27,7 @@ by default.
Supports file additions, removals, and commits that affect binary files. Supports file additions, removals, and commits that affect binary files.
If the commit is a merge commit, you must tell 'git-cvsexportcommit' what If the commit is a merge commit, you must tell 'git cvsexportcommit' what
parent the changeset should be done against. parent the changeset should be done against.
OPTIONS OPTIONS

View File

@ -28,9 +28,9 @@ At least version 2.1 is required.
Please see the section <<issues,ISSUES>> for further reference. Please see the section <<issues,ISSUES>> for further reference.
You should *never* do any work of your own on the branches that are You should *never* do any work of your own on the branches that are
created by 'git-cvsimport'. By default initial import will create and populate a created by 'git cvsimport'. By default initial import will create and populate a
"master" branch from the CVS repository's main branch which you're free "master" branch from the CVS repository's main branch which you're free
to work with; after that, you need to 'git-merge' incremental imports, or to work with; after that, you need to 'git merge' incremental imports, or
any CVS branches, yourself. It is advisable to specify a named remote via any CVS branches, yourself. It is advisable to specify a named remote via
-r to separate and protect the incoming branches. -r to separate and protect the incoming branches.
@ -49,13 +49,13 @@ OPTIONS
-d <CVSROOT>:: -d <CVSROOT>::
The root of the CVS archive. May be local (a simple path) or remote; The root of the CVS archive. May be local (a simple path) or remote;
currently, only the :local:, :ext: and :pserver: access methods currently, only the :local:, :ext: and :pserver: access methods
are supported. If not given, 'git-cvsimport' will try to read it are supported. If not given, 'git cvsimport' will try to read it
from `CVS/Root`. If no such file exists, it checks for the from `CVS/Root`. If no such file exists, it checks for the
`CVSROOT` environment variable. `CVSROOT` environment variable.
<CVS_module>:: <CVS_module>::
The CVS module you want to import. Relative to <CVSROOT>. The CVS module you want to import. Relative to <CVSROOT>.
If not given, 'git-cvsimport' tries to read it from If not given, 'git cvsimport' tries to read it from
`CVS/Repository`. `CVS/Repository`.
-C <target-dir>:: -C <target-dir>::
@ -65,14 +65,14 @@ OPTIONS
-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
branch. branch.
+ +
@ -145,17 +145,17 @@ This option can be used several times to provide several detection regexes.
--------- ---------
+ +
'git-cvsimport' will make it appear as those authors had 'git cvsimport' will make it appear as those authors had
their GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL set properly their GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL set properly
all along. all along.
+ +
For convenience, this data is saved to `$GIT_DIR/cvs-authors` For convenience, this data is saved to `$GIT_DIR/cvs-authors`
each time the '-A' option is provided and read from that same each time the '-A' option is provided and read from that same
file each time 'git-cvsimport' is run. file each time 'git cvsimport' is run.
+ +
It is not recommended to use this feature if you intend to It is not recommended to use this feature if you intend to
export changes back to CVS again later with export changes back to CVS again later with
'git-cvsexportcommit'. 'git cvsexportcommit'.
-h:: -h::
Print a short usage message and exit. Print a short usage message and exit.

View File

@ -22,7 +22,7 @@ cvspserver stream tcp nowait nobody /usr/bin/git-cvsserver git-cvsserver pserver
Usage: Usage:
[verse] [verse]
'git cvsserver' [options] [pserver|server] [<directory> ...] 'git-cvsserver' [options] [pserver|server] [<directory> ...]
OPTIONS OPTIONS
------- -------
@ -206,7 +206,7 @@ them write access to the directory, too.
The database can not be reliably regenerated in a The database can not be reliably regenerated in a
consistent form after the branch it is tracking has changed. consistent form after the branch it is tracking has changed.
Example: For merged branches, 'git-cvsserver' only tracks Example: For merged branches, 'git-cvsserver' only tracks
one branch of development, and after a 'git-merge' an one branch of development, and after a 'git merge' an
incrementally updated database may track a different branch incrementally updated database may track a different branch
than a database regenerated from scratch, causing inconsistent than a database regenerated from scratch, causing inconsistent
CVS revision numbers. `git-cvsserver` has no way of knowing which CVS revision numbers. `git-cvsserver` has no way of knowing which
@ -277,6 +277,21 @@ In `dbdriver` and `dbuser` you can use the following variables:
If no name can be determined, the If no name can be determined, the
numeric uid is used. numeric uid is used.
ENVIRONMENT
-----------
These variables obviate the need for command-line options in some
circumstances, allowing easier restricted usage through git-shell.
GIT_CVSSERVER_BASE_PATH takes the place of the argument to --base-path.
GIT_CVSSERVER_ROOT specifies a single-directory whitelist. The
repository must still be configured to allow access through
git-cvsserver, as described above.
When these environment variables are set, the corresponding
command-line arguments may not be used.
Eclipse CVS Client Notes Eclipse CVS Client Notes
------------------------ ------------------------
@ -294,7 +309,7 @@ To get a checkout with the Eclipse CVS client:
Protocol notes: If you are using anonymous access via pserver, just select that. Protocol notes: If you are using anonymous access via pserver, just select that.
Those using SSH access should choose the 'ext' protocol, and configure 'ext' Those using SSH access should choose the 'ext' protocol, and configure 'ext'
access on the Preferences->Team->CVS->ExtConnection pane. Set CVS_SERVER to access on the Preferences->Team->CVS->ExtConnection pane. Set CVS_SERVER to
"'git cvsserver'". Note that password support is not good when using 'ext', "`git cvsserver`". Note that password support is not good when using 'ext',
you will definitely want to have SSH keys setup. you will definitely want to have SSH keys setup.
Alternatively, you can just use the non-standard extssh protocol that Eclipse Alternatively, you can just use the non-standard extssh protocol that Eclipse

View File

@ -28,36 +28,36 @@ 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.
By default, only `upload-pack` service is enabled, which serves By default, only `upload-pack` service is enabled, which serves
'git-fetch-pack' and 'git-ls-remote' clients, which are invoked 'git fetch-pack' and 'git ls-remote' clients, which are invoked
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'.
OPTIONS OPTIONS
------- -------
--strict-paths:: --strict-paths::
Match paths exactly (i.e. don't allow "/foo/repo" when the real path is Match paths exactly (i.e. don't allow "/foo/repo" when the real path is
"/foo/repo.git" or "/foo/repo/.git") and don't do user-relative paths. "/foo/repo.git" or "/foo/repo/.git") and don't do user-relative paths.
'git-daemon' will refuse to start when this option is enabled and no 'git daemon' will refuse to start when this option is enabled and no
whitelist is specified. whitelist is specified.
--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'.
--base-path-relaxed:: --base-path-relaxed::
If --base-path is enabled and repo lookup fails, with this option If --base-path is enabled and repo lookup fails, with this option
'git-daemon' will attempt to lookup without prefixing the base path. 'git daemon' will attempt to lookup without prefixing the base path.
This is useful for switching to --base-path usage, while still This is useful for switching to --base-path usage, while still
allowing the old paths. allowing the old paths.
@ -143,7 +143,7 @@ OPTIONS
+ +
Giving these options is an error when used with `--inetd`; use Giving these options is an error when used with `--inetd`; use
the facility of inet daemon to achieve the same before spawning the facility of inet daemon to achieve the same before spawning
'git-daemon' if needed. 'git daemon' if needed.
--enable=service:: --enable=service::
--disable=service:: --disable=service::
@ -169,24 +169,24 @@ SERVICES
These services can be globally enabled/disabled using the These services can be globally enabled/disabled using the
command line options of this command. If a finer-grained command line options of this command. If a finer-grained
control is desired (e.g. to allow 'git-archive' to be run control is desired (e.g. to allow 'git archive' to be run
against only in a few selected repositories the daemon serves), against only in a few selected repositories the daemon serves),
the per-repository configuration file can be used to enable or the per-repository configuration file can be used to enable or
disable them. disable them.
upload-pack:: upload-pack::
This serves 'git-fetch-pack' and 'git-ls-remote' This serves 'git fetch-pack' and 'git ls-remote'
clients. It is enabled by default, but a repository can clients. It is enabled by default, but a repository can
disable it by setting `daemon.uploadpack` configuration disable it by setting `daemon.uploadpack` configuration
item to `false`. item to `false`.
upload-archive:: upload-archive::
This serves 'git-archive --remote'. It is disabled by This serves 'git archive --remote'. It is disabled by
default, but a repository can enable it by setting default, but a repository can enable it by setting
`daemon.uploadarch` configuration item to `true`. `daemon.uploadarch` configuration item to `true`.
receive-pack:: receive-pack::
This serves 'git-send-pack' clients, allowing anonymous This serves 'git send-pack' clients, allowing anonymous
push. It is disabled by default, as there is _no_ push. It is disabled by default, as there is _no_
authentication in the protocol (in other words, anybody authentication in the protocol (in other words, anybody
can push anything into the repository, including removal can push anything into the repository, including removal
@ -204,8 +204,8 @@ $ grep 9418 /etc/services
git 9418/tcp # Git Version Control System git 9418/tcp # Git Version Control System
------------ ------------
'git-daemon' as inetd server:: 'git daemon' as inetd server::
To set up 'git-daemon' as an inetd service that handles any To set up 'git daemon' as an inetd service that handles any
repository under the whitelisted set of directories, /pub/foo repository under the whitelisted set of directories, /pub/foo
and /pub/bar, place an entry like the following into and /pub/bar, place an entry like the following into
/etc/inetd all on one line: /etc/inetd all on one line:
@ -217,8 +217,8 @@ git 9418/tcp # Git Version Control System
------------------------------------------------ ------------------------------------------------
'git-daemon' as inetd server for virtual hosts:: 'git daemon' as inetd server for virtual hosts::
To set up 'git-daemon' as an inetd service that handles To set up 'git daemon' as an inetd service that handles
repositories for different virtual hosts, `www.example.com` repositories for different virtual hosts, `www.example.com`
and `www.example.org`, place an entry like the following into and `www.example.org`, place an entry like the following into
`/etc/inetd` all on one line: `/etc/inetd` all on one line:
@ -240,8 +240,8 @@ clients, a symlink from `/software` into the appropriate
default repository could be made as well. default repository could be made as well.
'git-daemon' as regular daemon for virtual hosts:: 'git daemon' as regular daemon for virtual hosts::
To set up 'git-daemon' as a regular, non-inetd service that To set up 'git daemon' as a regular, non-inetd service that
handles repositories for multiple virtual hosts based on handles repositories for multiple virtual hosts based on
their IP addresses, start the daemon like this: their IP addresses, start the daemon like this:
+ +
@ -258,7 +258,7 @@ Repositories can still be accessed by hostname though, assuming
they correspond to these IP addresses. they correspond to these IP addresses.
selectively enable/disable services per repository:: selectively enable/disable services per repository::
To enable 'git-archive --remote' and disable 'git-fetch' against To enable 'git archive --remote' and disable 'git fetch' against
a repository, have the following in the configuration file in the a repository, have the following in the configuration file in the
repository (that is the file 'config' next to 'HEAD', 'refs' and repository (that is the file 'config' next to 'HEAD', 'refs' and
'objects'). 'objects').
@ -272,7 +272,7 @@ selectively enable/disable services per repository::
ENVIRONMENT ENVIRONMENT
----------- -----------
'git-daemon' will set REMOTE_ADDR to the IP address of the client 'git daemon' will set REMOTE_ADDR to the IP address of the client
that connected to it, if the IP address is available. REMOTE_ADDR will that connected to it, if the IP address is available. REMOTE_ADDR will
be available in the environment of hooks called when be available in the environment of hooks called when
services are performed. services are performed.

View File

@ -106,7 +106,7 @@ of commits which would be displayed by "git log v1.0.4..parent".
The hash suffix is "-g" + 7-char abbreviation for the tip commit The hash suffix is "-g" + 7-char abbreviation for the tip commit
of parent (which was `2414721b194453f058079d897d13c4e377f92dc6`). of parent (which was `2414721b194453f058079d897d13c4e377f92dc6`).
Doing a 'git-describe' on a tag-name will just show the tag name: Doing a 'git describe' on a tag-name will just show the tag name:
[torvalds@g5 git]$ git describe v1.0.4 [torvalds@g5 git]$ git describe v1.0.4
v1.0.4 v1.0.4
@ -136,13 +136,13 @@ be sufficient to disambiguate these commits.
SEARCH STRATEGY SEARCH STRATEGY
--------------- ---------------
For each committish supplied, 'git-describe' will first look for For each committish supplied, 'git describe' will first look for
a tag which tags exactly that commit. Annotated tags will always a tag which tags exactly that commit. Annotated tags will always
be preferred over lightweight tags, and tags with newer dates will be preferred over lightweight tags, and tags with newer dates will
always be preferred over tags with older dates. If an exact match always be preferred over tags with older dates. If an exact match
is found, its name will be output and searching will stop. is found, its name will be output and searching will stop.
If an exact match was not found, 'git-describe' will walk back If an exact match was not found, 'git describe' will walk back
through the commit history to locate an ancestor commit which through the commit history to locate an ancestor commit which
has been tagged. The ancestor's tag will be output along with an has been tagged. The ancestor's tag will be output along with an
abbreviation of the input committish's SHA1. abbreviation of the input committish's SHA1.

View File

@ -15,7 +15,7 @@ DESCRIPTION
Compares the files in the working tree and the index. When paths Compares the files in the working tree and the index. When paths
are specified, compares only those named paths. Otherwise all are specified, compares only those named paths. Otherwise all
entries in the index are compared. The output format is the entries in the index are compared. The output format is the
same as for 'git-diff-index' and 'git-diff-tree'. same as for 'git diff-index' and 'git diff-tree'.
OPTIONS OPTIONS
------- -------

View File

@ -31,7 +31,7 @@ include::diff-options.txt[]
-m:: -m::
By default, files recorded in the index but not checked By default, files recorded in the index but not checked
out are reported as deleted. This flag makes out are reported as deleted. This flag makes
'git-diff-index' say that all non-checked-out files are up 'git diff-index' say that all non-checked-out files are up
to date. to date.
include::diff-format.txt[] include::diff-format.txt[]
@ -48,7 +48,7 @@ Cached Mode
If '--cached' is specified, it allows you to ask: If '--cached' is specified, it allows you to ask:
show me the differences between HEAD and the current index show me the differences between HEAD and the current index
contents (the ones I'd write using 'git-write-tree') contents (the ones I'd write using 'git write-tree')
For example, let's say that you have worked on your working directory, updated For example, let's say that you have worked on your working directory, updated
some files in the index and are ready to commit. You want to see exactly some files in the index and are ready to commit. You want to see exactly
@ -60,7 +60,7 @@ object and compare it that way, and to do that, you just do
Example: let's say I had renamed `commit.c` to `git-commit.c`, and I had Example: let's say I had renamed `commit.c` to `git-commit.c`, and I had
done an `update-index` to make that effective in the index file. done an `update-index` to make that effective in the index file.
`git diff-files` wouldn't show anything at all, since the index file `git diff-files` wouldn't show anything at all, since the index file
matches my working directory. But doing a 'git-diff-index' does: matches my working directory. But doing a 'git diff-index' does:
torvalds@ppc970:~/git> git diff-index --cached HEAD torvalds@ppc970:~/git> git diff-index --cached HEAD
-100644 blob 4161aecc6700a2eb579e842af0b7f22b98443f74 commit.c -100644 blob 4161aecc6700a2eb579e842af0b7f22b98443f74 commit.c
@ -69,10 +69,10 @@ matches my working directory. But doing a 'git-diff-index' does:
You can see easily that the above is a rename. You can see easily that the above is a rename.
In fact, `git diff-index --cached` *should* always be entirely equivalent to In fact, `git diff-index --cached` *should* always be entirely equivalent to
actually doing a 'git-write-tree' and comparing that. Except this one is much actually doing a 'git write-tree' and comparing that. Except this one is much
nicer for the case where you just want to check where you are. nicer for the case where you just want to check where you are.
So doing a 'git-diff-index --cached' is basically very useful when you are So doing a `git diff-index --cached` is basically very useful when you are
asking yourself "what have I already marked for being committed, and asking yourself "what have I already marked for being committed, and
what's the difference to a previous tree". what's the difference to a previous tree".
@ -80,20 +80,20 @@ Non-cached Mode
--------------- ---------------
The "non-cached" mode takes a different approach, and is potentially The "non-cached" mode takes a different approach, and is potentially
the more useful of the two in that what it does can't be emulated with the more useful of the two in that what it does can't be emulated with
a 'git-write-tree' + 'git-diff-tree'. Thus that's the default mode. a 'git write-tree' + 'git diff-tree'. Thus that's the default mode.
The non-cached version asks the question: The non-cached version asks the question:
show me the differences between HEAD and the currently checked out show me the differences between HEAD and the currently checked out
tree - index contents _and_ files that aren't up-to-date tree - index contents _and_ files that aren't up-to-date
which is obviously a very useful question too, since that tells you what which is obviously a very useful question too, since that tells you what
you *could* commit. Again, the output matches the 'git-diff-tree -r' you *could* commit. Again, the output matches the 'git diff-tree -r'
output to a tee, but with a twist. output to a tee, but with a twist.
The twist is that if some file doesn't match the index, we don't have The twist is that if some file doesn't match the index, we don't have
a backing store thing for it, and we use the magic "all-zero" sha1 to a backing store thing for it, and we use the magic "all-zero" sha1 to
show that. So let's say that you have edited `kernel/sched.c`, but show that. So let's say that you have edited `kernel/sched.c`, but
have not actually done a 'git-update-index' on it yet - there is no have not actually done a 'git update-index' on it yet - there is no
"object" associated with the new state, and you get: "object" associated with the new state, and you get:
torvalds@ppc970:~/v2.6/linux> git diff-index HEAD torvalds@ppc970:~/v2.6/linux> git diff-index HEAD
@ -104,11 +104,11 @@ not up-to-date and may contain new stuff. The all-zero sha1 means that to
get the real diff, you need to look at the object in the working directory get the real diff, you need to look at the object in the working directory
directly rather than do an object-to-object diff. directly rather than do an object-to-object diff.
NOTE: As with other commands of this type, 'git-diff-index' does not NOTE: As with other commands of this type, 'git diff-index' does not
actually look at the contents of the file at all. So maybe actually look at the contents of the file at all. So maybe
`kernel/sched.c` hasn't actually changed, and it's just that you `kernel/sched.c` hasn't actually changed, and it's just that you
touched it. In either case, it's a note that you need to touched it. In either case, it's a note that you need to
'git-update-index' it to make the index be in sync. 'git update-index' it to make the index be in sync.
NOTE: You can have a mixture of files show up as "has been updated" NOTE: You can have a mixture of files show up as "has been updated"
and "is still dirty in the working directory" together. You can always and "is still dirty in the working directory" together. You can always

View File

@ -20,7 +20,7 @@ Compares the content and mode of the blobs found via two tree objects.
If there is only one <tree-ish> given, the commit is compared with its parents If there is only one <tree-ish> given, the commit is compared with its parents
(see --stdin below). (see --stdin below).
Note that 'git-diff-tree' can use the tree encapsulated in a commit object. Note that 'git diff-tree' can use the tree encapsulated in a commit object.
OPTIONS OPTIONS
------- -------
@ -67,25 +67,25 @@ The following flags further affect the behavior when comparing
commits (but not trees). commits (but not trees).
-m:: -m::
By default, 'git-diff-tree --stdin' does not show By default, 'git diff-tree --stdin' does not show
differences for merge commits. With this flag, it shows differences for merge commits. With this flag, it shows
differences to that commit from all of its parents. See differences to that commit from all of its parents. See
also '-c'. also '-c'.
-s:: -s::
By default, 'git-diff-tree --stdin' shows differences, By default, 'git diff-tree --stdin' shows differences,
either in machine-readable form (without '-p') or in patch either in machine-readable form (without '-p') or in patch
form (with '-p'). This output can be suppressed. It is form (with '-p'). This output can be suppressed. It is
only useful with '-v' flag. only useful with '-v' flag.
-v:: -v::
This flag causes 'git-diff-tree --stdin' to also show This flag causes 'git diff-tree --stdin' to also show
the commit message before the differences. the commit message before the differences.
include::pretty-options.txt[] include::pretty-options.txt[]
--no-commit-id:: --no-commit-id::
'git-diff-tree' outputs a line with the commit ID when 'git diff-tree' outputs a line with the commit ID when
applicable. This flag suppressed the commit ID output. applicable. This flag suppressed the commit ID output.
-c:: -c::

View File

@ -157,6 +157,10 @@ $ git diff -R <2>
rewrites (very expensive). rewrites (very expensive).
<2> Output diff in reverse. <2> Output diff in reverse.
SEE ALSO
--------
linkgit:git-difftool[1]::
Show changes using common diff tools
Author Author
------ ------

View File

@ -7,13 +7,13 @@ git-difftool - Show changes using common diff tools
SYNOPSIS SYNOPSIS
-------- --------
'git difftool' [--tool=<tool>] [-y|--no-prompt|--prompt] [<'git diff' options>] 'git difftool' [<options>] <commit>{0,2} [--] [<path>...]
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. to 'git diff' and accepts the same options and arguments.
OPTIONS OPTIONS
------- -------
@ -33,23 +33,23 @@ OPTIONS
kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff,
ecmerge, diffuse, opendiff, p4merge and araxis. ecmerge, diffuse, opendiff, p4merge and araxis.
+ +
If a diff tool is not specified, 'git-difftool' If a diff tool is not specified, 'git difftool'
will use the configuration variable `diff.tool`. If the will use the configuration variable `diff.tool`. If the
configuration variable `diff.tool` is not set, 'git-difftool' configuration variable `diff.tool` is not set, 'git difftool'
will pick a suitable default. will pick a suitable default.
+ +
You can explicitly provide a full path to the tool by setting the You can explicitly provide a full path to the tool by setting the
configuration variable `difftool.<tool>.path`. For example, you configuration variable `difftool.<tool>.path`. For example, you
can configure the absolute path to kdiff3 by setting can configure the absolute path to kdiff3 by setting
`difftool.kdiff3.path`. Otherwise, 'git-difftool' assumes the `difftool.kdiff3.path`. Otherwise, 'git difftool' assumes the
tool is available in PATH. tool is available in PATH.
+ +
Instead of running one of the known diff tools, Instead of running one of the known diff tools,
'git-difftool' can be customized to run an alternative program 'git difftool' can be customized to run an alternative program
by specifying the command line to invoke in a configuration by specifying the command line to invoke in a configuration
variable `difftool.<tool>.cmd`. variable `difftool.<tool>.cmd`.
+ +
When 'git-difftool' is invoked with this tool (either through the When 'git difftool' is invoked with this tool (either through the
`-t` or `--tool` option or the `diff.tool` configuration variable) `-t` or `--tool` option or the `diff.tool` configuration variable)
the configured command line will be invoked with the following the configured command line will be invoked with the following
variables available: `$LOCAL` is set to the name of the temporary variables available: `$LOCAL` is set to the name of the temporary
@ -58,16 +58,31 @@ is set to the name of the temporary file containing the contents
of the diff post-image. `$BASE` is provided for compatibility of the diff post-image. `$BASE` is provided for compatibility
with custom merge tool commands and has the same value as `$LOCAL`. with custom merge tool commands and has the same value as `$LOCAL`.
-x <command>::
--extcmd=<command>::
Specify a custom command for viewing diffs.
'git-difftool' ignores the configured defaults and runs
`$command $LOCAL $REMOTE` when this option is specified.
-g::
--gui::
When 'git-difftool' is invoked with the `-g` or `--gui` option
the default diff tool will be read from the configured
`diff.guitool` variable instead of `diff.tool`.
See linkgit:git-diff[1] for the full list of supported options. See linkgit:git-diff[1] for the full list of supported options.
CONFIG VARIABLES CONFIG VARIABLES
---------------- ----------------
'git-difftool' falls back to 'git-mergetool' config variables when the 'git difftool' falls back to 'git mergetool' config variables when the
difftool equivalents have not been defined. difftool equivalents have not been defined.
diff.tool:: diff.tool::
The default diff tool to use. The default diff tool to use.
diff.guitool::
The default diff tool to use when `--gui` is specified.
difftool.<tool>.path:: difftool.<tool>.path::
Override the path for the given tool. This is useful in case Override the path for the given tool. This is useful in case
your tool is not in the PATH. your tool is not in the PATH.

View File

@ -13,18 +13,18 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
This program dumps the given revisions in a form suitable to be piped This program dumps the given revisions in a form suitable to be piped
into 'git-fast-import'. into 'git fast-import'.
You can use it as a human-readable bundle replacement (see You can use it as a human-readable bundle replacement (see
linkgit:git-bundle[1]), or as a kind of an interactive linkgit:git-bundle[1]), or as a kind of an interactive
'git-filter-branch'. 'git filter-branch'.
OPTIONS OPTIONS
------- -------
--progress=<n>:: --progress=<n>::
Insert 'progress' statements every <n> objects, to be shown by Insert 'progress' statements every <n> objects, to be shown by
'git-fast-import' during import. 'git fast-import' during import.
--signed-tags=(verbatim|warn|strip|abort):: --signed-tags=(verbatim|warn|strip|abort)::
Specify how to handle signed tags. Since any transformation Specify how to handle signed tags. Since any transformation
@ -91,8 +91,8 @@ marks the same across runs.
already contains the necessary objects. already contains the necessary objects.
[git-rev-list-args...]:: [git-rev-list-args...]::
A list of arguments, acceptable to 'git-rev-parse' and A list of arguments, acceptable to 'git rev-parse' and
'git-rev-list', that specifies the specific objects and references 'git rev-list', that specifies the specific objects and references
to export. For example, `master\~10..master` causes the to export. For example, `master\~10..master` causes the
current master reference to be exported along with all objects current master reference to be exported along with all objects
added since its 10th ancestor commit. added since its 10th ancestor commit.
@ -125,7 +125,7 @@ referenced by that revision range contains the string
Limitations Limitations
----------- -----------
Since 'git-fast-import' cannot tag trees, you will not be Since 'git fast-import' cannot tag trees, you will not be
able to export the linux-2.6.git repository completely, as it contains able to export the linux-2.6.git repository completely, as it contains
a tag referencing a tree instead of a commit. a tag referencing a tree instead of a commit.

View File

@ -15,7 +15,7 @@ DESCRIPTION
This program is usually not what the end user wants to run directly. This program is usually not what the end user wants to run directly.
Most end users want to use one of the existing frontend programs, Most end users want to use one of the existing frontend programs,
which parses a specific type of foreign source and feeds the contents which parses a specific type of foreign source and feeds the contents
stored there to 'git-fast-import'. stored there to 'git fast-import'.
fast-import reads a mixed command/data stream from standard input and fast-import reads a mixed command/data stream from standard input and
writes one or more packfiles directly into the current repository. writes one or more packfiles directly into the current repository.
@ -24,7 +24,7 @@ updated branch and tag refs, fully updating the current repository
with the newly imported data. with the newly imported data.
The fast-import backend itself can import into an empty repository (one that The fast-import backend itself can import into an empty repository (one that
has already been initialized by 'git-init') or incrementally has already been initialized by 'git init') or incrementally
update an existing populated repository. Whether or not incremental update an existing populated repository. Whether or not incremental
imports are supported from a particular foreign source depends on imports are supported from a particular foreign source depends on
the frontend program in use. the frontend program in use.
@ -75,6 +75,20 @@ OPTIONS
set of marks. If a mark is defined to different values, set of marks. If a mark is defined to different values,
the last file wins. the last file wins.
--relative-marks::
After specifying --relative-marks= the paths specified
with --import-marks= and --export-marks= are relative
to an internal directory in the current repository.
In git-fast-import this means that the paths are relative
to the .git/info/fast-import directory. However, other
importers may use a different location.
--no-relative-marks::
Negates a previous --relative-marks. Allows for combining
relative and non-relative marks by interweaving
--(no-)-relative-marks= with the --(import|export)-marks=
options.
--export-pack-edges=<file>:: --export-pack-edges=<file>::
After creating a packfile, print a line of data to After creating a packfile, print a line of data to
<file> listing the filename of the packfile and the last <file> listing the filename of the packfile and the last
@ -82,7 +96,7 @@ OPTIONS
This information may be useful after importing projects This information may be useful after importing projects
whose total object set exceeds the 4 GiB packfile limit, whose total object set exceeds the 4 GiB packfile limit,
as these commits can be used as edge points during calls as these commits can be used as edge points during calls
to 'git-pack-objects'. to 'git pack-objects'.
--quiet:: --quiet::
Disable all non-fatal output, making fast-import silent when it Disable all non-fatal output, making fast-import silent when it
@ -124,9 +138,9 @@ an ideal situation, given that most conversion tools are throw-away
Parallel Operation Parallel Operation
------------------ ------------------
Like 'git-push' or 'git-fetch', imports handled by fast-import are safe to Like 'git push' or 'git fetch', imports handled by fast-import are safe to
run alongside parallel `git repack -a -d` or `git gc` invocations, run alongside parallel `git repack -a -d` or `git gc` invocations,
or any other Git operation (including 'git-prune', as loose objects or any other Git operation (including 'git prune', as loose objects
are never used by fast-import). are never used by fast-import).
fast-import does not lock the branch or tag refs it is actively importing. fast-import does not lock the branch or tag refs it is actively importing.
@ -220,7 +234,7 @@ variation in formatting will cause fast-import to reject the value.
+ +
An example value is ``Tue Feb 6 11:22:18 2007 -0500''. The Git An example value is ``Tue Feb 6 11:22:18 2007 -0500''. The Git
parser is accurate, but a little on the lenient side. It is the parser is accurate, but a little on the lenient side. It is the
same parser used by 'git-am' when applying patches same parser used by 'git am' when applying patches
received from email. received from email.
+ +
Some malformed strings may be accepted as valid dates. In some of Some malformed strings may be accepted as valid dates. In some of
@ -256,7 +270,7 @@ timezone.
This particular format is supplied as its short to implement and This particular format is supplied as its short to implement and
may be useful to a process that wants to create a new commit may be useful to a process that wants to create a new commit
right now, without needing to use a working directory or right now, without needing to use a working directory or
'git-update-index'. 'git update-index'.
+ +
If separate `author` and `committer` commands are used in a `commit` If separate `author` and `committer` commands are used in a `commit`
the timestamps may not match, as the system clock will be polled the timestamps may not match, as the system clock will be polled
@ -303,6 +317,15 @@ and control the current import process. More detailed discussion
standard output. This command is optional and is not needed standard output. This command is optional and is not needed
to perform an import. to perform an import.
`feature`::
Require that fast-import supports the specified feature, or
abort if it does not.
`option`::
Specify any of the options listed under OPTIONS that do not
change stream semantic to suit the frontend's needs. This
command is optional and is not needed to perform an import.
`commit` `commit`
~~~~~~~~ ~~~~~~~~
Create or update a branch with a new commit, recording one logical Create or update a branch with a new commit, recording one logical
@ -690,7 +713,7 @@ recommended, as the frontend does not (easily) have access to the
complete set of bytes which normally goes into such a signature. complete set of bytes which normally goes into such a signature.
If signing is required, create lightweight tags from within fast-import with If signing is required, create lightweight tags from within fast-import with
`reset`, then create the annotated versions of those tags offline `reset`, then create the annotated versions of those tags offline
with the standard 'git-tag' process. with the standard 'git tag' process.
`reset` `reset`
~~~~~~~ ~~~~~~~
@ -846,6 +869,62 @@ Placing a `progress` command immediately after a `checkpoint` will
inform the reader when the `checkpoint` has been completed and it inform the reader when the `checkpoint` has been completed and it
can safely access the refs that fast-import updated. can safely access the refs that fast-import updated.
`feature`
~~~~~~~~~
Require that fast-import supports the specified feature, or abort if
it does not.
....
'feature' SP <feature> LF
....
The <feature> part of the command may be any string matching
^[a-zA-Z][a-zA-Z-]*$ and should be understood by fast-import.
Feature work identical as their option counterparts with the
exception of the import-marks feature, see below.
The following features are currently supported:
* date-format
* import-marks
* export-marks
* relative-marks
* no-relative-marks
* force
The import-marks behaves differently from when it is specified as
commandline option in that only one "feature import-marks" is allowed
per stream. Also, any --import-marks= specified on the commandline
will override those from the stream (if any).
`option`
~~~~~~~~
Processes the specified option so that git fast-import behaves in a
way that suits the frontend's needs.
Note that options specified by the frontend are overridden by any
options the user may specify to git fast-import itself.
....
'option' SP <option> LF
....
The `<option>` part of the command may contain any of the options
listed in the OPTIONS section that do not change import semantics,
without the leading '--' and is treated in the same way.
Option commands must be the first commands on the input (not counting
feature commands), to give an option command after any non-option
command is an error.
The following commandline options change import semantics and may therefore
not be passed as option:
* date-format
* import-marks
* export-marks
* force
Crash Reports Crash Reports
------------- -------------
If fast-import is supplied invalid input it will terminate with a If fast-import is supplied invalid input it will terminate with a
@ -991,7 +1070,7 @@ is not `refs/heads/TAG_FIXUP`).
When committing fixups, consider using `merge` to connect the When committing fixups, consider using `merge` to connect the
commit(s) which are supplying file revisions to the fixup branch. commit(s) which are supplying file revisions to the fixup branch.
Doing so will allow tools such as 'git-blame' to track Doing so will allow tools such as 'git blame' to track
through the real commit history and properly annotate the source through the real commit history and properly annotate the source
files. files.
@ -1020,7 +1099,7 @@ Repacking Historical Data
~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~
If you are repacking very old imported data (e.g. older than the If you are repacking very old imported data (e.g. older than the
last year), consider expending some extra CPU time and supplying last year), consider expending some extra CPU time and supplying
\--window=50 (or higher) when you run 'git-repack'. \--window=50 (or higher) when you run 'git repack'.
This will take longer, but will also produce a smaller packfile. This will take longer, but will also produce a smaller packfile.
You only need to expend the effort once, and everyone using your You only need to expend the effort once, and everyone using your
project will benefit from the smaller repository. project will benefit from the smaller repository.

View File

@ -12,7 +12,7 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
Usually you would want to use 'git-fetch', which is a Usually you would want to use 'git fetch', which is a
higher level wrapper of this command, instead. higher level wrapper of this command, instead.
Invokes 'git-upload-pack' on a possibly remote repository Invokes 'git-upload-pack' on a possibly remote repository
@ -33,12 +33,12 @@ OPTIONS
-q:: -q::
--quiet:: --quiet::
Pass '-q' flag to 'git-unpack-objects'; this makes the Pass '-q' flag to 'git unpack-objects'; this makes the
cloning process less verbose. cloning process less verbose.
-k:: -k::
--keep:: --keep::
Do not invoke 'git-unpack-objects' on received data, but Do not invoke 'git unpack-objects' on received data, but
create a single packfile out of it instead, and store it create a single packfile out of it instead, and store it
in the object database. If provided twice then the pack is in the object database. If provided twice then the pack is
locked against repacking. locked against repacking.

View File

@ -24,7 +24,7 @@ along with the objects necessary to complete them.
The ref names and their object names of fetched refs are stored The ref names and their object names of fetched refs are stored
in `.git/FETCH_HEAD`. This information is left for a later merge in `.git/FETCH_HEAD`. This information is left for a later merge
operation done by 'git-merge'. operation done by 'git merge'.
When <refspec> stores the fetched result in tracking branches, When <refspec> stores the fetched result in tracking branches,
the tags that point at these branches are automatically the tags that point at these branches are automatically

View File

@ -116,7 +116,7 @@ OPTIONS
--commit-filter <command>:: --commit-filter <command>::
This is the filter for performing the commit. This is the filter for performing the commit.
If this filter is specified, it will be called instead of the If this filter is specified, it will be called instead of the
'git-commit-tree' command, with arguments of the form 'git commit-tree' command, with arguments of the form
"<TREE_ID> [-p <PARENT_COMMIT_ID>]..." and the log message on "<TREE_ID> [-p <PARENT_COMMIT_ID>]..." and the log message on
stdin. The commit id is expected on stdout. stdin. The commit id is expected on stdout.
+ +
@ -127,10 +127,10 @@ have all of them as parents.
You can use the 'map' convenience function in this filter, and other You can use the 'map' convenience function in this filter, and other
convenience functions, too. For example, calling 'skip_commit "$@"' convenience functions, too. For example, calling 'skip_commit "$@"'
will leave out the current commit (but not its changes! If you want will leave out the current commit (but not its changes! If you want
that, use 'git-rebase' instead). that, use 'git rebase' instead).
+ +
You can also use the 'git_commit_non_empty_tree "$@"' instead of You can also use the `git_commit_non_empty_tree "$@"` instead of
'git commit-tree "$@"' if you don't wish to keep commits with a single parent `git commit-tree "$@"` if you don't wish to keep commits with a single parent
and that makes no change to the tree. and that makes no change to the tree.
--tag-name-filter <command>:: --tag-name-filter <command>::
@ -179,7 +179,7 @@ the nearest ancestor that was not excluded.
and only one parent, it will hence keep merges points. Also, this and only one parent, it will hence keep merges points. Also, this
option is not compatible with the use of '--commit-filter'. Though you option is not compatible with the use of '--commit-filter'. Though you
just need to use the function 'git_commit_non_empty_tree "$@"' instead just need to use the function 'git_commit_non_empty_tree "$@"' instead
of the 'git commit-tree "$@"' idiom in your commit filter to make that of the `git commit-tree "$@"` idiom in your commit filter to make that
happen. happen.
--original <namespace>:: --original <namespace>::
@ -196,15 +196,15 @@ the nearest ancestor that was not excluded.
-f:: -f::
--force:: --force::
'git-filter-branch' refuses to start with an existing temporary 'git filter-branch' refuses to start with an existing temporary
directory or when there are already refs starting with directory or when there are already refs starting with
'refs/original/', unless forced. 'refs/original/', unless forced.
<rev-list options>...:: <rev-list options>...::
Arguments for 'git-rev-list'. All positive refs included by Arguments for 'git rev-list'. All positive refs included by
these options are rewritten. You may also specify options these options are rewritten. You may also specify options
such as '--all', but you must use '--' to separate them from such as '--all', but you must use '--' to separate them from
the 'git-filter-branch' options. the 'git filter-branch' options.
Examples Examples
@ -221,7 +221,7 @@ However, if the file is absent from the tree of some commit,
a simple `rm filename` will fail for that tree and commit. a simple `rm filename` will fail for that tree and commit.
Thus you may instead want to use `rm -f filename` as the script. Thus you may instead want to use `rm -f filename` as the script.
Using `\--index-filter` with 'git-rm' yields a significantly faster Using `\--index-filter` with 'git rm' yields a significantly faster
version. Like with using `rm filename`, `git rm --cached filename` version. Like with using `rm filename`, `git rm --cached filename`
will fail if the file is absent from the tree of a commit. If you will fail if the file is absent from the tree of a commit. If you
want to "completely forget" a file, it does not matter when it entered want to "completely forget" a file, it does not matter when it entered
@ -303,7 +303,7 @@ and all children of the merge will become merge commits with P1,P2
as their parents instead of the merge commit. as their parents instead of the merge commit.
You can rewrite the commit log messages using `--msg-filter`. For You can rewrite the commit log messages using `--msg-filter`. For
example, 'git-svn-id' strings in a repository created by 'git-svn' can example, 'git svn-id' strings in a repository created by 'git svn' can
be removed this way: be removed this way:
------------------------------------------------------- -------------------------------------------------------
@ -314,7 +314,7 @@ git filter-branch --msg-filter '
To restrict rewriting to only part of the history, specify a revision To restrict rewriting to only part of the history, specify a revision
range in addition to the new branch name. The new branch name will range in addition to the new branch name. The new branch name will
point to the top-most revision that a 'git-rev-list' of this range point to the top-most revision that a 'git rev-list' of this range
will print. will print.
If you need to add 'Acked-by' lines to, say, the last 10 commits (none If you need to add 'Acked-by' lines to, say, the last 10 commits (none
@ -330,7 +330,7 @@ git filter-branch --msg-filter '
*NOTE* the changes introduced by the commits, and which are not reverted *NOTE* the changes introduced by the commits, and which are not reverted
by subsequent commits, will still be in the rewritten branch. If you want by subsequent commits, will still be in the rewritten branch. If you want
to throw out _changes_ together with the commits, you should use the to throw out _changes_ together with the commits, you should use the
interactive mode of 'git-rebase'. interactive mode of 'git rebase'.
Consider this history: Consider this history:

View File

@ -16,7 +16,7 @@ DESCRIPTION
----------- -----------
Takes the list of merged objects on stdin and produces a suitable Takes the list of merged objects on stdin and produces a suitable
commit message to be used for the merge commit, usually to be commit message to be used for the merge commit, usually to be
passed as the '<merge-message>' argument of 'git-merge'. passed as the '<merge-message>' argument of 'git merge'.
This command is intended mostly for internal use by scripts This command is intended mostly for internal use by scripts
automatically invoking 'git merge'. automatically invoking 'git merge'.

View File

@ -82,7 +82,7 @@ objecttype::
The type of the object (`blob`, `tree`, `commit`, `tag`). The type of the object (`blob`, `tree`, `commit`, `tag`).
objectsize:: objectsize::
The size of the object (the same as 'git-cat-file -s' reports). The size of the object (the same as 'git cat-file -s' reports).
objectname:: objectname::
The object name (aka SHA-1). The object name (aka SHA-1).

View File

@ -29,7 +29,7 @@ DESCRIPTION
Prepare each commit with its patch in Prepare each commit with its patch in
one file per commit, formatted to resemble UNIX mailbox format. one file per commit, formatted to resemble UNIX mailbox format.
The output of this command is convenient for e-mail submission or The output of this command is convenient for e-mail submission or
for use with 'git-am'. for use with 'git am'.
There are two ways to specify which commits to operate on. There are two ways to specify which commits to operate on.
@ -221,7 +221,7 @@ EXAMPLES
-------- --------
* Extract commits between revisions R1 and R2, and apply them on top of * Extract commits between revisions R1 and R2, and apply them on top of
the current branch using 'git-am' to cherry-pick them: the current branch using 'git am' to cherry-pick them:
+ +
------------ ------------
$ git format-patch -k --stdout R1..R2 | git am -3 -k $ git format-patch -k --stdout R1..R2 | git am -3 -k

View File

@ -21,7 +21,7 @@ OPTIONS
<object>:: <object>::
An object to treat as the head of an unreachability trace. An object to treat as the head of an unreachability trace.
+ +
If no objects are given, 'git-fsck' defaults to using the If no objects are given, 'git fsck' defaults to using the
index file, all SHA1 references in .git/refs/*, and all reflogs (unless index file, all SHA1 references in .git/refs/*, and all reflogs (unless
--no-reflogs is given) as heads. --no-reflogs is given) as heads.
@ -85,7 +85,7 @@ So for example
will do quite a _lot_ of verification on the tree. There are a few will do quite a _lot_ of verification on the tree. There are a few
extra validity tests to be added (make sure that tree objects are extra validity tests to be added (make sure that tree objects are
sorted properly etc), but on the whole if 'git-fsck' is happy, you sorted properly etc), but on the whole if 'git fsck' is happy, you
do have a valid tree. do have a valid tree.
Any corrupt objects you will have to find in backups or other archives Any corrupt objects you will have to find in backups or other archives

View File

@ -15,13 +15,13 @@ DESCRIPTION
Runs a number of housekeeping tasks within the current repository, Runs a number of housekeeping tasks within the current repository,
such as compressing file revisions (to reduce disk space and increase such as compressing file revisions (to reduce disk space and increase
performance) and removing unreachable objects which may have been performance) and removing unreachable objects which may have been
created from prior invocations of 'git-add'. created from prior invocations of 'git add'.
Users are encouraged to run this task on a regular basis within Users are encouraged to run this task on a regular basis within
each repository to maintain good disk space utilization and good each repository to maintain good disk space utilization and good
operating performance. operating performance.
Some git commands may automatically run 'git-gc'; see the `--auto` flag Some git commands may automatically run 'git gc'; see the `--auto` flag
below for details. If you know what you're doing and all you want is to below for details. If you know what you're doing and all you want is to
disable this behavior permanently without further considerations, just do: disable this behavior permanently without further considerations, just do:
@ -33,15 +33,15 @@ OPTIONS
------- -------
--aggressive:: --aggressive::
Usually 'git-gc' runs very quickly while providing good disk Usually 'git gc' runs very quickly while providing good disk
space utilization and performance. This option will cause space utilization and performance. This option will cause
'git-gc' to more aggressively optimize the repository at the expense 'git gc' to more aggressively optimize the repository at the expense
of taking much more time. The effects of this optimization are of taking much more time. The effects of this optimization are
persistent, so this option only needs to be used occasionally; every persistent, so this option only needs to be used occasionally; every
few hundred changesets or so. few hundred changesets or so.
--auto:: --auto::
With this option, 'git-gc' checks whether any housekeeping is With this option, 'git gc' checks whether any housekeeping is
required; if not, it exits without performing any work. required; if not, it exits without performing any work.
Some git commands run `git gc --auto` after performing Some git commands run `git gc --auto` after performing
operations that could create many loose objects. operations that could create many loose objects.
@ -50,13 +50,13 @@ Housekeeping is required if there are too many loose objects or
too many packs in the repository. If the number of loose objects too many packs in the repository. If the number of loose objects
exceeds the value of the `gc.auto` configuration variable, then exceeds the value of the `gc.auto` configuration variable, then
all loose objects are combined into a single pack using all loose objects are combined into a single pack using
'git-repack -d -l'. Setting the value of `gc.auto` to 0 `git repack -d -l`. Setting the value of `gc.auto` to 0
disables automatic packing of loose objects. disables automatic packing of loose objects.
+ +
If the number of packs exceeds the value of `gc.autopacklimit`, If the number of packs exceeds the value of `gc.autopacklimit`,
then existing packs (except those marked with a `.keep` file) then existing packs (except those marked with a `.keep` file)
are consolidated into a single pack by using the `-A` option of are consolidated into a single pack by using the `-A` option of
'git-repack'. Setting `gc.autopacklimit` to 0 disables 'git repack'. Setting `gc.autopacklimit` to 0 disables
automatic consolidation of packs. automatic consolidation of packs.
--prune=<date>:: --prune=<date>::
@ -97,7 +97,7 @@ how long records of conflicted merge you have not resolved are
kept. This defaults to 15 days. kept. This defaults to 15 days.
The optional configuration variable 'gc.packrefs' determines if The optional configuration variable 'gc.packrefs' determines if
'git-gc' runs 'git-pack-refs'. This can be set to "nobare" to enable 'git gc' runs 'git pack-refs'. This can be set to "nobare" to enable
it within all non-bare repos or it can be set to a boolean value. it within all non-bare repos or it can be set to a boolean value.
This defaults to true. This defaults to true.
@ -116,10 +116,10 @@ default is "2 weeks ago".
Notes Notes
----- -----
'git-gc' tries very hard to be safe about the garbage it collects. In 'git gc' tries very hard to be safe about the garbage it collects. In
particular, it will keep not only objects referenced by your current set particular, it will keep not only objects referenced by your current set
of branches and tags, but also objects referenced by the index, remote of branches and tags, but also objects referenced by the index, remote
tracking branches, refs saved by 'git-filter-branch' in tracking branches, refs saved by 'git filter-branch' in
refs/original/, or reflogs (which may reference commits in branches refs/original/, or reflogs (which may reference commits in branches
that were later amended or rewound). that were later amended or rewound).

View File

@ -14,12 +14,12 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
Acts as a filter, extracting the commit ID stored in archives created by Acts as a filter, extracting the commit ID stored in archives created by
'git-archive'. It reads only the first 1024 bytes of input, thus its 'git archive'. It reads only the first 1024 bytes of input, thus its
runtime is not influenced by the size of <tarfile> very much. runtime is not influenced by the size of <tarfile> very much.
If no commit ID is found, 'git-get-tar-commit-id' quietly exists with a If no commit ID is found, 'git get-tar-commit-id' quietly exists with a
return code of 1. This can happen if <tarfile> had not been created return code of 1. This can happen if <tarfile> had not been created
using 'git-archive' or if the first parameter of 'git-archive' had been using 'git archive' or if the first parameter of 'git archive' had been
a tree ID instead of a commit ID or tag. a tree ID instead of a commit ID or tag.

View File

@ -98,7 +98,7 @@ OPTIONS
--files-without-match:: --files-without-match::
Instead of showing every matched line, show only the Instead of showing every matched line, show only the
names of files that contain (or do not contain) matches. names of files that contain (or do not contain) matches.
For better compatibility with 'git-diff', --name-only is a For better compatibility with 'git diff', --name-only is a
synonym for --files-with-matches. synonym for --files-with-matches.
-z:: -z::

View File

@ -11,19 +11,19 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
A Tcl/Tk based graphical user interface to Git. 'git-gui' focuses A Tcl/Tk based graphical user interface to Git. 'git gui' focuses
on allowing users to make changes to their repository by making on allowing users to make changes to their repository by making
new commits, amending existing ones, creating branches, performing new commits, amending existing ones, creating branches, performing
local merges, and fetching/pushing to remote repositories. local merges, and fetching/pushing to remote repositories.
Unlike 'gitk', 'git-gui' focuses on commit generation Unlike 'gitk', 'git gui' focuses on commit generation
and single file annotation and does not show project history. and single file annotation and does not show project history.
It does however supply menu actions to start a 'gitk' session from It does however supply menu actions to start a 'gitk' session from
within 'git-gui'. within 'git gui'.
'git-gui' is known to work on all popular UNIX systems, Mac OS X, 'git gui' is known to work on all popular UNIX systems, Mac OS X,
and Windows (under both Cygwin and MSYS). To the extent possible and Windows (under both Cygwin and MSYS). To the extent possible
OS specific user interface guidelines are followed, making 'git-gui' OS specific user interface guidelines are followed, making 'git gui'
a fairly native interface for users. a fairly native interface for users.
COMMANDS COMMANDS
@ -38,13 +38,13 @@ browser::
browser are opened in the blame viewer. browser are opened in the blame viewer.
citool:: citool::
Start 'git-gui' and arrange to make exactly one commit before Start 'git gui' and arrange to make exactly one commit before
exiting and returning to the shell. The interface is limited exiting and returning to the shell. The interface is limited
to only commit actions, slightly reducing the application's to only commit actions, slightly reducing the application's
startup time and simplifying the menubar. startup time and simplifying the menubar.
version:: version::
Display the currently running version of 'git-gui'. Display the currently running version of 'git gui'.
Examples Examples
@ -103,15 +103,15 @@ 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.
Other Other
----- -----
'git-gui' is actually maintained as an independent project, but stable 'git gui' is actually maintained as an independent project, but stable
versions are distributed as part of the Git suite for the convenience versions are distributed as part of the Git suite for the convenience
of end users. of end users.
A 'git-gui' development repository can be obtained from: A 'git gui' development repository can be obtained from:
git clone git://repo.or.cz/git-gui.git git clone git://repo.or.cz/git-gui.git

View File

@ -18,7 +18,7 @@ Computes the object ID value for an object with specified type
with the contents of the named file (which can be outside of the with the contents of the named file (which can be outside of the
work tree), and optionally writes the resulting object into the work tree), and optionally writes the resulting object into the
object database. Reports its object ID to its standard output. object database. Reports its object ID to its standard output.
This is used by 'git-cvsimport' to update the index This is used by 'git cvsimport' to update the index
without modifying files in the work tree. When <type> is not without modifying files in the work tree. When <type> is not
specified, it defaults to "blob". specified, it defaults to "blob".

View File

@ -55,8 +55,8 @@ other display programs (see below).
+ +
The web browser can be specified using the configuration variable The web browser can be specified using the configuration variable
'help.browser', or 'web.browser' if the former is not set. If none of 'help.browser', or 'web.browser' if the former is not set. If none of
these config variables is set, the 'git-web--browse' helper script these config variables is set, the 'git web--browse' helper script
(called by 'git-help') will pick a suitable default. See (called by 'git help') will pick a suitable default. See
linkgit:git-web--browse[1] for more information about this. linkgit:git-web--browse[1] for more information about this.
CONFIGURATION VARIABLES CONFIGURATION VARIABLES
@ -67,7 +67,7 @@ help.format
If no command line option is passed, the 'help.format' configuration If no command line option is passed, the 'help.format' configuration
variable will be checked. The following values are supported for this variable will be checked. The following values are supported for this
variable; they make 'git-help' behave as their corresponding command variable; they make 'git help' behave as their corresponding command
line option: line option:
* "man" corresponds to '-m|--man', * "man" corresponds to '-m|--man',
@ -122,7 +122,7 @@ man.<tool>.path
You can explicitly provide a full path to your preferred man viewer by You can explicitly provide a full path to your preferred man viewer by
setting the configuration variable 'man.<tool>.path'. For example, you setting the configuration variable 'man.<tool>.path'. For example, you
can configure the absolute path to konqueror by setting can configure the absolute path to konqueror by setting
'man.konqueror.path'. Otherwise, 'git-help' assumes the tool is 'man.konqueror.path'. Otherwise, 'git help' assumes the tool is
available in PATH. available in PATH.
man.<tool>.cmd man.<tool>.cmd

View File

@ -8,7 +8,7 @@ git-http-backend - Server side implementation of Git over HTTP
SYNOPSIS SYNOPSIS
-------- --------
[verse] [verse]
'git-http-backend' 'git http-backend'
DESCRIPTION DESCRIPTION
----------- -----------
@ -18,11 +18,16 @@ The program supports clients fetching using both the smart HTTP protcol
and the backwards-compatible dumb HTTP protocol, as well as clients 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
"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
GIT_HTTP_EXPORT_ALL environmental variable is set).
By default, only the `upload-pack` service is enabled, which serves By default, only the `upload-pack` service is enabled, which serves
'git-fetch-pack' and 'git-ls-remote' clients, which are invoked from 'git fetch-pack' and 'git ls-remote' clients, which are invoked from
'git-fetch', 'git-pull', and 'git-clone'. If the client is authenticated, 'git fetch', 'git pull', and 'git clone'. If the client is authenticated,
the `receive-pack` service is enabled, which serves 'git-send-pack' the `receive-pack` service is enabled, which serves 'git send-pack'
clients, which is invoked from 'git-push'. clients, which is invoked from 'git push'.
SERVICES SERVICES
-------- --------
@ -38,12 +43,12 @@ http.getanyfile::
by setting this configuration item to `false`. by setting this configuration item to `false`.
http.uploadpack:: http.uploadpack::
This serves 'git-fetch-pack' and 'git-ls-remote' clients. This serves 'git fetch-pack' and 'git ls-remote' clients.
It is enabled by default, but a repository can disable it It is enabled by default, but a repository can disable it
by setting this configuration item to `false`. by setting this configuration item to `false`.
http.receivepack:: http.receivepack::
This serves 'git-send-pack' clients, allowing push. It is This serves 'git send-pack' clients, allowing push. It is
disabled by default for anonymous users, and enabled by disabled by default for anonymous users, and enabled by
default for users authenticated by the web server. It can be default for users authenticated by the web server. It can be
disabled by setting this item to `false`, or enabled for all disabled by setting this item to `false`, or enabled for all
@ -51,11 +56,11 @@ http.receivepack::
URL TRANSLATION URL TRANSLATION
--------------- ---------------
To determine the location of the repository on disk, 'git-http-backend' To determine the location of the repository on disk, 'git http-backend'
concatenates the environment variables PATH_INFO, which is set concatenates the environment variables PATH_INFO, which is set
automatically by the web server, and GIT_PROJECT_ROOT, which must be set automatically by the web server, and GIT_PROJECT_ROOT, which must be set
manually in the web server configuration. If GIT_PROJECT_ROOT is not manually in the web server configuration. If GIT_PROJECT_ROOT is not
set, 'git-http-backend' reads PATH_TRANSLATED, which is also set set, 'git http-backend' reads PATH_TRANSLATED, which is also set
automatically by the web server. automatically by the web server.
EXAMPLES EXAMPLES
@ -70,6 +75,7 @@ Apache 2.x::
+ +
---------------------------------------------------------------- ----------------------------------------------------------------
SetEnv GIT_PROJECT_ROOT /var/www/git SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/ ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
---------------------------------------------------------------- ----------------------------------------------------------------
+ +
@ -98,7 +104,7 @@ directive around the repository, or one of its parent directories:
---------------------------------------------------------------- ----------------------------------------------------------------
+ +
To serve gitweb at the same url, use a ScriptAliasMatch to only To serve gitweb at the same url, use a ScriptAliasMatch to only
those URLs that 'git-http-backend' can handle, and forward the those URLs that 'git http-backend' can handle, and forward the
rest to gitweb: rest to gitweb:
+ +
---------------------------------------------------------------- ----------------------------------------------------------------
@ -147,7 +153,7 @@ ScriptAlias /git/ /var/www/cgi-bin/gitweb.cgi/
ENVIRONMENT ENVIRONMENT
----------- -----------
'git-http-backend' relies upon the CGI environment variables set 'git http-backend' relies upon the CGI environment variables set
by the invoking web server, including: by the invoking web server, including:
* PATH_INFO (if GIT_PROJECT_ROOT is set, otherwise PATH_TRANSLATED) * PATH_INFO (if GIT_PROJECT_ROOT is set, otherwise PATH_TRANSLATED)
@ -157,6 +163,10 @@ by the invoking web server, including:
* QUERY_STRING * QUERY_STRING
* REQUEST_METHOD * REQUEST_METHOD
The GIT_HTTP_EXPORT_ALL environmental variable may be passed to
'git-http-backend' to bypass the check for the "git-daemon-export-ok"
file in each repository before allowing export of that repository.
The backend process sets GIT_COMMITTER_NAME to '$REMOTE_USER' and The backend process sets GIT_COMMITTER_NAME to '$REMOTE_USER' and
GIT_COMMITTER_EMAIL to '$\{REMOTE_USER}@http.$\{REMOTE_ADDR\}', GIT_COMMITTER_EMAIL to '$\{REMOTE_USER}@http.$\{REMOTE_ADDR\}',
ensuring that any reflogs created by 'git-receive-pack' contain some ensuring that any reflogs created by 'git-receive-pack' contain some

View File

@ -35,7 +35,7 @@ commit-id::
--stdin:: --stdin::
Instead of a commit id on the command line (which is not expected in this Instead of a commit id on the command line (which is not expected in this
case), 'git-http-fetch' expects lines on stdin in the format case), 'git http-fetch' expects lines on stdin in the format
<commit-id>['\t'<filename-as-in--w>] <commit-id>['\t'<filename-as-in--w>]

View File

@ -13,7 +13,7 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
This command uploads a mailbox generated with 'git-format-patch' This command uploads a mailbox generated with 'git format-patch'
into an IMAP drafts folder. This allows patches to be sent as into an IMAP drafts folder. This allows patches to be sent as
other email is when using mail clients that cannot read mailbox other email is when using mail clients that cannot read mailbox
files directly. files directly.

View File

@ -43,10 +43,10 @@ OPTIONS
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
'git-repack'. 'git repack'.
--fix-thin:: --fix-thin::
It is possible for 'git-pack-objects' to build It is possible for 'git pack-objects' to build
"thin" pack, which records objects in deltified form based on "thin" pack, which records objects in deltified form based on
objects not included in the pack to reduce network traffic. objects not included in the pack to reduce network traffic.
Those objects are expected to be present on the receiving end Those objects are expected to be present on the receiving end
@ -59,7 +59,7 @@ OPTIONS
Before moving the index into its final destination Before moving the index into its final destination
create an empty .keep file for the associated pack file. create an empty .keep file for the associated pack file.
This option is usually necessary with --stdin to prevent a This option is usually necessary with --stdin to prevent a
simultaneous 'git-repack' process from deleting simultaneous 'git repack' process from deleting
the newly constructed pack and index before refs can be the newly constructed pack and index before refs can be
updated to use objects contained in the pack. updated to use objects contained in the pack.
@ -86,7 +86,7 @@ Once the index has been created, the list of object names is sorted
and the SHA1 hash of that list is printed to stdout. If --stdin was and the SHA1 hash of that list is printed to stdout. If --stdin was
also used then this is prefixed by either "pack\t", or "keep\t" if a also used then this is prefixed by either "pack\t", or "keep\t" if a
new .keep file was successfully created. This is useful to remove a new .keep file was successfully created. This is useful to remove a
.keep file used as a lock to prevent the race with 'git-repack' .keep file used as a lock to prevent the race with 'git repack'
mentioned above. mentioned above.

View File

@ -95,11 +95,11 @@ If the object storage directory is specified via the `$GIT_OBJECT_DIRECTORY`
environment variable then the sha1 directories are created underneath - environment variable then the sha1 directories are created underneath -
otherwise the default `$GIT_DIR/objects` directory is used. otherwise the default `$GIT_DIR/objects` directory is used.
Running 'git-init' in an existing repository is safe. It will not overwrite Running 'git init' in an existing repository is safe. It will not overwrite
things that are already there. The primary reason for rerunning 'git-init' things that are already there. The primary reason for rerunning 'git init'
is to pick up newly added templates. is to pick up newly added templates.
Note that 'git-init' is the same as 'git-init-db'. The command Note that 'git init' is the same as 'git init-db'. The command
was primarily meant to initialize the object database, but over was primarily meant to initialize the object database, but over
time it has become responsible for setting up the other aspects time it has become responsible for setting up the other aspects
of the repository, such as installing the default hooks and of the repository, such as installing the default hooks and

View File

@ -44,7 +44,7 @@ OPTIONS
-b:: -b::
--browser:: --browser::
The web browser that should be used to view the gitweb The web browser that should be used to view the gitweb
page. This will be passed to the 'git-web--browse' helper page. This will be passed to the 'git web--browse' helper
script along with the URL of the gitweb instance. See script along with the URL of the gitweb instance. See
linkgit:git-web--browse[1] for more information about this. If linkgit:git-web--browse[1] for more information about this. If
the script fails, the URL will be printed to stdout. the script fails, the URL will be printed to stdout.

View File

@ -14,9 +14,9 @@ DESCRIPTION
----------- -----------
Shows the commit logs. Shows the commit logs.
The command takes options applicable to the 'git-rev-list' The command takes options applicable to the 'git rev-list'
command to control what is shown and how, and options applicable to command to control what is shown and how, and options applicable to
the 'git-diff-*' commands to control how the changes the 'git diff-*' commands to control how the changes
each commit introduces are shown. each commit introduces are shown.
@ -107,6 +107,17 @@ git log --follow builtin-rev-list.c::
those commits that occurred before the file was given its those commits that occurred before the file was given its
present name. present name.
git log --branches --not --remotes=origin::
Shows all commits that are in any of local branches but not in
any of remote tracking branches for 'origin' (what you have that
origin doesn't).
git log master --not --remotes=*/master::
Shows all commits that are in local master but not in any remote
repository master branches.
Discussion Discussion
---------- ----------

View File

@ -109,6 +109,7 @@ OPTIONS
Identify the file status with the following tags (followed by Identify the file status with the following tags (followed by
a space) at the start of each line: a space) at the start of each line:
H:: cached H:: cached
S:: skip-worktree
M:: unmerged M:: unmerged
R:: removed/deleted R:: removed/deleted
C:: modified/changed C:: modified/changed
@ -140,12 +141,12 @@ OPTIONS
Output Output
------ ------
show files just outputs the filename unless '--stage' is specified in 'git ls-files' just outputs the filenames unless '--stage' is specified in
which case it outputs: which case it outputs:
[<tag> ]<mode> <object> <stage> <file> [<tag> ]<mode> <object> <stage> <file>
'git-ls-files --unmerged' and 'git-ls-files --stage' can be used to examine 'git ls-files --unmerged' and 'git ls-files --stage' can be used to examine
detailed information on unmerged paths. detailed information on unmerged paths.
For an unmerged path, instead of recording a single mode/SHA1 pair, For an unmerged path, instead of recording a single mode/SHA1 pair,
@ -162,7 +163,7 @@ respectively.
Exclude Patterns Exclude Patterns
---------------- ----------------
'git-ls-files' can use a list of "exclude patterns" when 'git ls-files' can use a list of "exclude patterns" when
traversing the directory tree and finding files to show when the traversing the directory tree and finding files to show when the
flags --others or --ignored are specified. linkgit:gitignore[5] flags --others or --ignored are specified. linkgit:gitignore[5]
specifies the format of exclude patterns. specifies the format of exclude patterns.
@ -178,7 +179,7 @@ These exclude patterns come from these places, in order:
in the same order they appear in the file. in the same order they appear in the file.
3. command line flag --exclude-per-directory=<name> specifies 3. command line flag --exclude-per-directory=<name> specifies
a name of the file in each directory 'git-ls-files' a name of the file in each directory 'git ls-files'
examines, normally `.gitignore`. Files in deeper examines, normally `.gitignore`. Files in deeper
directories take precedence. Patterns are ordered in the directories take precedence. Patterns are ordered in the
same order they appear in the files. same order they appear in the files.

View File

@ -28,7 +28,7 @@ in the current working directory. Note that:
in a directory 'sub' that has a directory 'dir', you can run 'git in a directory 'sub' that has a directory 'dir', you can run 'git
ls-tree -r HEAD dir' to list the contents of the tree (that is ls-tree -r HEAD dir' to list the contents of the tree (that is
'sub/dir' in 'HEAD'). You don't want to give a tree that is not at the 'sub/dir' in 'HEAD'). You don't want to give a tree that is not at the
root level (e.g. 'git ls-tree -r HEAD:sub dir') in this case, as that root level (e.g. `git ls-tree -r HEAD:sub dir`) in this case, as that
would result in asking for 'sub/sub/dir' in the 'HEAD' commit. would result in asking for 'sub/sub/dir' in the 'HEAD' commit.
However, the current working directory can be ignored by passing However, the current working directory can be ignored by passing
--full-tree option. --full-tree option.
@ -84,7 +84,7 @@ Output Format
Unless the `-z` option is used, TAB, LF, and backslash characters Unless the `-z` option is used, TAB, LF, and backslash characters
in pathnames are represented as `\t`, `\n`, and `\\`, respectively. in pathnames are represented as `\t`, `\n`, and `\\`, respectively.
This output format is compatible with what '--index-info --stdin' of This output format is compatible with what `--index-info --stdin` of
'git update-index' expects. 'git update-index' expects.
When the `-l` option is used, format changes to When the `-l` option is used, format changes to

View File

@ -16,7 +16,7 @@ DESCRIPTION
Reads a single e-mail message from the standard input, and Reads a single e-mail message from the standard input, and
writes the commit log message in <msg> file, and the patches in writes the commit log message in <msg> file, and the patches in
<patch> file. The author name, e-mail and e-mail subject are <patch> file. The author name, e-mail and e-mail subject are
written out to the standard output to be used by 'git-am' written out to the standard output to be used by 'git am'
to create a commit. It is usually not necessary to use this to create a commit. It is usually not necessary to use this
command directly. See linkgit:git-am[1] instead. command directly. See linkgit:git-am[1] instead.
@ -30,7 +30,7 @@ OPTIONS
whitespaces, (3) '[' up to ']', typically '[PATCH]', and whitespaces, (3) '[' up to ']', typically '[PATCH]', and
then prepends "[PATCH] ". This flag forbids this then prepends "[PATCH] ". This flag forbids this
munging, and is most useful when used to read back munging, and is most useful when used to read back
'git-format-patch -k' output. 'git format-patch -k' output.
-b:: -b::
When -k is not in effect, all leading strings bracketed with '[' When -k is not in effect, all leading strings bracketed with '['

View File

@ -10,20 +10,21 @@ SYNOPSIS
-------- --------
[verse] [verse]
'git merge-file' [-L <current-name> [-L <base-name> [-L <other-name>]]] 'git merge-file' [-L <current-name> [-L <base-name> [-L <other-name>]]]
[-p|--stdout] [-q|--quiet] <current-file> <base-file> <other-file> [--ours|--theirs] [-p|--stdout] [-q|--quiet]
<current-file> <base-file> <other-file>
DESCRIPTION DESCRIPTION
----------- -----------
'git-merge-file' incorporates all changes that lead from the `<base-file>` 'git merge-file' incorporates all changes that lead from the `<base-file>`
to `<other-file>` into `<current-file>`. The result ordinarily goes into to `<other-file>` into `<current-file>`. The result ordinarily goes into
`<current-file>`. 'git-merge-file' is useful for combining separate changes `<current-file>`. 'git merge-file' is useful for combining separate changes
to an original. Suppose `<base-file>` is the original, and both to an original. Suppose `<base-file>` is the original, and both
`<current-file>` and `<other-file>` are modifications of `<base-file>`, `<current-file>` and `<other-file>` are modifications of `<base-file>`,
then 'git-merge-file' combines both changes. then 'git merge-file' combines both changes.
A conflict occurs if both `<current-file>` and `<other-file>` have changes A conflict occurs if both `<current-file>` and `<other-file>` have changes
in a common segment of lines. If a conflict is found, 'git-merge-file' in a common segment of lines. If a conflict is found, 'git merge-file'
normally outputs a warning and brackets the conflict with lines containing normally outputs a warning and brackets the conflict with lines containing
<<<<<<< and >>>>>>> markers. A typical conflict will look like this: <<<<<<< and >>>>>>> markers. A typical conflict will look like this:
@ -34,12 +35,14 @@ normally outputs a warning and brackets the conflict with lines containing
>>>>>>> B >>>>>>> B
If there are conflicts, the user should edit the result and delete one of If there are conflicts, the user should edit the result and delete one of
the alternatives. the alternatives. When `--ours` or `--theirs` option is in effect, however,
these conflicts are resolved favouring lines from `<current-file>` or
lines from `<other-file>` respectively.
The exit value of this program is negative on error, and the number of The exit value of this program is negative on error, and the number of
conflicts otherwise. If the merge was clean, the exit value is 0. conflicts otherwise. If the merge was clean, the exit value is 0.
'git-merge-file' is designed to be a minimal clone of RCS 'merge'; that is, it 'git merge-file' is designed to be a minimal clone of RCS 'merge'; that is, it
implements all of RCS 'merge''s functionality which is needed by implements all of RCS 'merge''s functionality which is needed by
linkgit:git[1]. linkgit:git[1].
@ -62,6 +65,11 @@ OPTIONS
-q:: -q::
Quiet; do not warn about conflicts. Quiet; do not warn about conflicts.
--ours::
--theirs::
Instead of leaving conflicts in the file, resolve conflicts
favouring our (or their) side of the lines.
EXAMPLES EXAMPLES
-------- --------

View File

@ -36,14 +36,14 @@ OPTIONS
failure usually indicates conflicts during the merge). This is for failure usually indicates conflicts during the merge). This is for
porcelains which might want to emit custom messages. porcelains which might want to emit custom messages.
If 'git-merge-index' is called with multiple <file>s (or -a) then it 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
@ -68,10 +68,10 @@ or
This is added AA in the branch B. This is added AA in the branch B.
fatal: merge program failed fatal: merge program failed
where the latter example shows how 'git-merge-index' will stop trying to where the latter example shows how 'git merge-index' will stop trying to
merge once anything has returned an error (i.e., `cat` returned an error merge once anything has returned an error (i.e., `cat` returned an error
for the AA file, because it didn't exist in the original, and thus for the AA file, because it didn't exist in the original, and thus
'git-merge-index' didn't even try to merge the MM thing). 'git merge-index' didn't even try to merge the MM thing).
Author Author
------ ------

View File

@ -8,12 +8,12 @@ git-merge-one-file - The standard helper program to use with git-merge-index
SYNOPSIS SYNOPSIS
-------- --------
'git-merge-one-file' 'git merge-one-file'
DESCRIPTION DESCRIPTION
----------- -----------
This is the standard helper program to use with 'git-merge-index' This is the standard helper program to use with 'git merge-index'
to resolve a merge after the trivial merge done with 'git-read-tree -m'. to resolve a merge after the trivial merge done with 'git read-tree -m'.
Author Author
------ ------

View File

@ -10,17 +10,45 @@ SYNOPSIS
-------- --------
[verse] [verse]
'git merge' [-n] [--stat] [--no-commit] [--squash] [-s <strategy>]... 'git merge' [-n] [--stat] [--no-commit] [--squash] [-s <strategy>]...
[-m <msg>] <remote>... [--[no-]rerere-autoupdate] [-m <msg>] <commit>...
'git merge' <msg> HEAD <remote>... 'git merge' <msg> HEAD <commit>...
DESCRIPTION DESCRIPTION
----------- -----------
This is the top-level interface to the merge machinery Incorporates changes from the named commits (since the time their
which drives multiple merge strategy scripts. histories diverged from the current branch) into the current
branch. This command is used by 'git pull' to incorporate changes
from another repository and can be used by hand to merge changes
from one branch into another.
The second syntax (<msg> `HEAD` <remote>) is supported for Assume the following history exists and the current branch is
"`master`":
------------
A---B---C topic
/
D---E---F---G master
------------
Then "`git merge topic`" will replay the changes made on the
`topic` branch since it diverged from `master` (i.e., `E`) until
its current commit (`C`) on top of `master`, and record the result
in a new commit along with the names of the two parent commits and
a log message from the user describing the changes.
------------
A---B---C topic
/ \
D---E---F---G---H master
------------
The second syntax (<msg> `HEAD` <commit>...) is supported for
historical reasons. Do not use it from the command line or in historical reasons. Do not use it from the command line or in
new scripts. It is the same as `git merge -m <msg> <remote>`. new scripts. It is the same as `git merge -m <msg> <commit>...`.
*Warning*: Running 'git merge' with uncommitted changes is
discouraged: while possible, it leaves you in a state that is hard to
back out of in the case of a conflict.
OPTIONS OPTIONS
@ -33,93 +61,83 @@ include::merge-options.txt[]
used to give a good default for automated 'git merge' used to give a good default for automated 'git merge'
invocations. invocations.
<remote>...:: --rerere-autoupdate::
Other branch heads to merge into our branch. You need at --no-rerere-autoupdate::
least one <remote>. Specifying more than one <remote> Allow the rerere mechanism to update the index with the
obviously means you are trying an Octopus. result of auto-conflict resolution if possible.
include::merge-strategies.txt[] <commit>...::
Commits, usually other branch heads, to merge into our branch.
You need at least one <commit>. Specifying more than one
<commit> obviously means you are trying an Octopus.
If you tried a merge which resulted in complex conflicts and PRE-MERGE CHECKS
want to start over, you can recover with 'git-reset'. ----------------
CONFIGURATION Before applying outside changes, you should get your own work in
------------- good shape and committed locally, so it will not be clobbered if
include::merge-config.txt[] there are conflicts. See also linkgit:git-stash[1].
'git pull' and 'git merge' will stop without doing anything when
local uncommitted changes overlap with files that 'git pull'/'git
merge' may need to update.
branch.<name>.mergeoptions:: To avoid recording unrelated changes in the merge commit,
Sets default options for merging into branch <name>. The syntax and 'git pull' and 'git merge' will also abort if there are any changes
supported options are the same as those of 'git merge', but option registered in the index relative to the `HEAD` commit. (One
values containing whitespace characters are currently not supported. exception is when the changed index entries are in the state that
would result from the merge already.)
HOW MERGE WORKS If all named commits are already ancestors of `HEAD`, 'git merge'
--------------- will exit early with the message "Already up-to-date."
A merge is always between the current `HEAD` and one or more FAST-FORWARD MERGE
commits (usually, branch head or tag), and the index file must ------------------
match the tree of `HEAD` commit (i.e. the contents of the last commit)
when it starts out. In other words, `git diff --cached HEAD` must
report no changes. (One exception is when the changed index
entries are already in the same state that would result from
the merge anyway.)
Three kinds of merge can happen: Often the current branch head is an ancestor of the named commit.
This is the most common case especially when invoked from 'git
pull': you are tracking an upstream repository, you have committed
no local changes, and now you want to update to a newer upstream
revision. In this case, a new commit is not needed to store the
combined history; instead, the `HEAD` (along with the index) is
updated to point at the named commit, without creating an extra
merge commit.
* The merged commit is already contained in `HEAD`. This is the This behavior can be suppressed with the `--no-ff` option.
simplest case, called "Already up-to-date."
* `HEAD` is already contained in the merged commit. This is the TRUE MERGE
most common case especially when invoked from 'git pull': ----------
you are tracking an upstream repository, have committed no local
changes and now you want to update to a newer upstream revision.
Your `HEAD` (and the index) is updated to point at the merged
commit, without creating an extra merge commit. This is
called "Fast-forward".
* Both the merged commit and `HEAD` are independent and must be Except in a fast-forward merge (see above), the branches to be
tied together by a merge commit that has both of them as its parents. merged must be tied together by a merge commit that has both of them
The rest of this section describes this "True merge" case. as its parents.
The chosen merge strategy merges the two commits into a single A merged version reconciling the changes from all branches to be
new source tree. merged is committed, and your `HEAD`, index, and working tree are
When things merge cleanly, this is what happens: updated to it. It is possible to have modifications in the working
tree as long as they do not overlap; the update will preserve them.
1. The results are updated both in the index file and in your When it is not obvious how to reconcile the changes, the following
working tree; happens:
2. Index file is written out as a tree;
3. The tree gets committed; and
4. The `HEAD` pointer gets advanced.
Because of 2., we require that the original state of the index 1. The `HEAD` pointer stays the same.
file matches exactly the current `HEAD` commit; otherwise we 2. The `MERGE_HEAD` ref is set to point to the other branch head.
will write out your local changes already registered in your 3. Paths that merged cleanly are updated both in the index file and
index file along with the merge result, which is not good.
Because 1. involves only those paths differing between your
branch and the remote branch you are pulling from during the
merge (which is typically a fraction of the whole tree), you can
have local modifications in your working tree as long as they do
not overlap with what the merge updates.
When there are conflicts, the following happens:
1. `HEAD` stays the same.
2. Cleanly merged paths are updated both in the index file and
in your working tree. in your working tree.
4. For conflicting paths, the index file records up to three
3. For conflicting paths, the index file records up to three versions: stage 1 stores the version from the common ancestor,
versions; stage1 stores the version from the common ancestor, stage 2 from `HEAD`, and stage 3 from `MERGE_HEAD` (you
stage2 from `HEAD`, and stage3 from the remote branch (you
can inspect the stages with `git ls-files -u`). The working can inspect the stages with `git ls-files -u`). The working
tree files contain the result of the "merge" program; i.e. 3-way tree files contain the result of the "merge" program; i.e. 3-way
merge results with familiar conflict markers `<<< === >>>`. merge results with familiar conflict markers `<<<` `===` `>>>`.
5. No other changes are made. In particular, the local
4. No other changes are done. In particular, the local
modifications you had before you started merge will stay the modifications you had before you started merge will stay the
same and the index entries for them stay as they were, same and the index entries for them stay as they were,
i.e. matching `HEAD`. i.e. matching `HEAD`.
If you tried a merge which resulted in complex conflicts and
want to start over, you can recover with `git reset --merge`.
HOW CONFLICTS ARE PRESENTED HOW CONFLICTS ARE PRESENTED
--------------------------- ---------------------------
@ -189,28 +207,30 @@ After seeing a conflict, you can do two things:
* Decide not to merge. The only clean-ups you need are to reset * Decide not to merge. The only clean-ups you need are to reset
the index file to the `HEAD` commit to reverse 2. and to clean the index file to the `HEAD` commit to reverse 2. and to clean
up working tree changes made by 2. and 3.; 'git-reset --hard' can up working tree changes made by 2. and 3.; `git-reset --hard` can
be used for this. be used for this.
* Resolve the conflicts. Git will mark the conflicts in * Resolve the conflicts. Git will mark the conflicts in
the working tree. Edit the files into shape and the working tree. Edit the files into shape and
'git-add' them to the index. Use 'git-commit' to seal the deal. 'git add' them to the index. Use 'git commit' to seal the deal.
You can work through the conflict with a number of tools: You can work through the conflict with a number of tools:
* Use a mergetool. 'git mergetool' to launch a graphical * Use a mergetool. `git mergetool` to launch a graphical
mergetool which will work you through the merge. mergetool which will work you through the merge.
* Look at the diffs. 'git diff' will show a three-way diff, * Look at the diffs. `git diff` will show a three-way diff,
highlighting changes from both the HEAD and remote versions. highlighting changes from both the `HEAD` and `MERGE_HEAD`
versions.
* Look at the diffs on their own. 'git log --merge -p <path>' * Look at the diffs from each branch. `git log --merge -p <path>`
will show diffs first for the HEAD version and then the will show diffs first for the `HEAD` version and then the
remote version. `MERGE_HEAD` version.
* Look at the originals. 'git show :1:filename' shows the * Look at the originals. `git show :1:filename` shows the
common ancestor, 'git show :2:filename' shows the HEAD common ancestor, `git show :2:filename` shows the `HEAD`
version and 'git show :3:filename' shows the remote version. version, and `git show :3:filename` shows the `MERGE_HEAD`
version.
EXAMPLES EXAMPLES
@ -245,6 +265,17 @@ changes into a merge commit. Small fixups like bumping
release/version name would be acceptable. release/version name would be acceptable.
include::merge-strategies.txt[]
CONFIGURATION
-------------
include::merge-config.txt[]
branch.<name>.mergeoptions::
Sets default options for merging into branch <name>. The syntax and
supported options are the same as those of 'git merge', but option
values containing whitespace characters are currently not supported.
SEE ALSO SEE ALSO
-------- --------
linkgit:git-fmt-merge-msg[1], linkgit:git-pull[1], linkgit:git-fmt-merge-msg[1], linkgit:git-pull[1],

View File

@ -13,11 +13,11 @@ DESCRIPTION
----------- -----------
Use `git mergetool` to run one of several merge utilities to resolve Use `git mergetool` to run one of several merge utilities to resolve
merge conflicts. It is typically run after 'git-merge'. merge conflicts. It is typically run after 'git merge'.
If one or more <file> parameters are given, the merge tool program will If one or more <file> parameters are given, the merge tool program will
be run to resolve differences on each file. If no <file> names are be run to resolve differences on each file. If no <file> names are
specified, 'git-mergetool' will run the merge tool program on every file specified, 'git mergetool' will run the merge tool program on every file
with merge conflicts. with merge conflicts.
OPTIONS OPTIONS
@ -29,23 +29,23 @@ OPTIONS
kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge,
diffuse, tortoisemerge, opendiff, p4merge and araxis. diffuse, tortoisemerge, opendiff, p4merge and araxis.
+ +
If a merge resolution program is not specified, 'git-mergetool' If a merge resolution program is not specified, 'git mergetool'
will use the configuration variable `merge.tool`. If the will use the configuration variable `merge.tool`. If the
configuration variable `merge.tool` is not set, 'git-mergetool' configuration variable `merge.tool` is not set, 'git mergetool'
will pick a suitable default. will pick a suitable default.
+ +
You can explicitly provide a full path to the tool by setting the You can explicitly provide a full path to the tool by setting the
configuration variable `mergetool.<tool>.path`. For example, you configuration variable `mergetool.<tool>.path`. For example, you
can configure the absolute path to kdiff3 by setting can configure the absolute path to kdiff3 by setting
`mergetool.kdiff3.path`. Otherwise, 'git-mergetool' assumes the `mergetool.kdiff3.path`. Otherwise, 'git mergetool' assumes the
tool is available in PATH. tool is available in PATH.
+ +
Instead of running one of the known merge tool programs, Instead of running one of the known merge tool programs,
'git-mergetool' can be customized to run an alternative program 'git mergetool' can be customized to run an alternative program
by specifying the command line to invoke in a configuration by specifying the command line to invoke in a configuration
variable `mergetool.<tool>.cmd`. variable `mergetool.<tool>.cmd`.
+ +
When 'git-mergetool' is invoked with this tool (either through the When 'git mergetool' is invoked with this tool (either through the
`-t` or `--tool` option or the `merge.tool` configuration `-t` or `--tool` option or the `merge.tool` configuration
variable) the configured command line will be invoked with `$BASE` variable) the configured command line will be invoked with `$BASE`
set to the name of a temporary file containing the common base for set to the name of a temporary file containing the common base for
@ -59,7 +59,7 @@ merge resolution.
If the custom merge tool correctly indicates the success of a If the custom merge tool correctly indicates the success of a
merge resolution with its exit code, then the configuration merge resolution with its exit code, then the configuration
variable `mergetool.<tool>.trustExitCode` can be set to `true`. variable `mergetool.<tool>.trustExitCode` can be set to `true`.
Otherwise, 'git-mergetool' will prompt the user to indicate the Otherwise, 'git mergetool' will prompt the user to indicate the
success of the resolution after the custom tool has exited. success of the resolution after the custom tool has exited.
-y:: -y::

View File

@ -15,7 +15,7 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
Finds symbolic names suitable for human digestion for revisions given in any Finds symbolic names suitable for human digestion for revisions given in any
format parsable by 'git-rev-parse'. format parsable by 'git rev-parse'.
OPTIONS OPTIONS
@ -55,7 +55,7 @@ wrote you about that fantastic commit 33db5f4d9027a10e477ccf054b2c1ab94f74c85a.
Of course, you look into the commit, but that only tells you what happened, but Of course, you look into the commit, but that only tells you what happened, but
not the context. not the context.
Enter 'git-name-rev': Enter 'git name-rev':
------------ ------------
% git name-rev 33db5f4d9027a10e477ccf054b2c1ab94f74c85a % git name-rev 33db5f4d9027a10e477ccf054b2c1ab94f74c85a

View File

@ -8,7 +8,7 @@ git-notes - Add/inspect commit notes
SYNOPSIS SYNOPSIS
-------- --------
[verse] [verse]
'git-notes' (edit [-F <file> | -m <msg>] | show) [commit] 'git notes' (edit [-F <file> | -m <msg>] | show) [commit]
DESCRIPTION DESCRIPTION
----------- -----------

View File

@ -32,7 +32,7 @@ Placing both 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 such an archive. enables git to read from such an 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
one-object" format; this is typically done by the smart-pull one-object" format; this is typically done by the smart-pull
commands when a pack is created on-the-fly for efficient network commands when a pack is created on-the-fly for efficient network
@ -61,7 +61,7 @@ base-name::
--revs:: --revs::
Read the revision arguments from the standard input, instead of Read the revision arguments from the standard input, instead of
individual object names. The revision arguments are processed individual object names. The revision arguments are processed
the same way as 'git-rev-list' with the `--objects` flag the same way as 'git rev-list' with the `--objects` flag
uses its `commit` arguments to build the list of objects it uses its `commit` arguments to build the list of objects it
outputs. The objects on the resulting list are packed. outputs. The objects on the resulting list are packed.
@ -182,7 +182,7 @@ base-name::
A packed archive can express base object of a delta as A packed archive can express base object of a delta as
either 20-byte object name or as an offset in the either 20-byte object name or as an offset in the
stream, but older version of git does not understand the stream, but older version of git does not 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
compactness. Depending on the average delta chain compactness. Depending on the average delta chain

View File

@ -16,7 +16,7 @@ This program computes which packs in your repository
are redundant. The output is suitable for piping to are redundant. The output is suitable for piping to
`xargs rm` if you are in the root of the repository. `xargs rm` if you are in the root of the repository.
'git-pack-redundant' accepts a list of objects on standard input. Any objects 'git pack-redundant' accepts a list of objects on standard input. Any objects
given will be ignored when checking which packs are required. This makes the given will be ignored when checking which packs are required. This makes the
following command useful when wanting to remove packs which contain unreachable following command useful when wanting to remove packs which contain unreachable
objects. objects.

View File

@ -18,7 +18,7 @@ ID" are almost guaranteed to be the same thing.
IOW, you can use this thing to look for likely duplicate commits. IOW, you can use this thing to look for likely duplicate commits.
When dealing with 'git-diff-tree' output, it takes advantage of When dealing with 'git diff-tree' output, it takes advantage of
the fact that the patch is prefixed with the object name of the the fact that the patch is prefixed with the object name of the
commit, and outputs two 40-byte hexadecimal strings. The first commit, and outputs two 40-byte hexadecimal strings. The first
string is the patch ID, and the second string is the commit ID. string is the patch ID, and the second string is the commit ID.

View File

@ -12,7 +12,7 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
This command is deprecated; use 'git-ls-remote' instead. This command is deprecated; use 'git ls-remote' instead.
OPTIONS OPTIONS
------- -------

View File

@ -8,21 +8,21 @@ git-prune - Prune all unreachable objects from the object database
SYNOPSIS SYNOPSIS
-------- --------
'git-prune' [-n] [-v] [--expire <expire>] [--] [<head>...] 'git prune' [-n] [-v] [--expire <expire>] [--] [<head>...]
DESCRIPTION DESCRIPTION
----------- -----------
NOTE: In most cases, users should run 'git-gc', which calls NOTE: In most cases, users should run 'git gc', which calls
'git-prune'. See the section "NOTES", below. 'git prune'. See the section "NOTES", below.
This runs 'git-fsck --unreachable' using all the refs This runs 'git fsck --unreachable' using all the refs
available in `$GIT_DIR/refs`, optionally with additional set of available in `$GIT_DIR/refs`, optionally with additional set of
objects specified on the command line, and prunes all unpacked objects specified on the command line, and prunes all unpacked
objects unreachable from any of these head objects from the object database. objects unreachable from any of these head objects from the object database.
In addition, it In addition, it
prunes the unpacked objects that are also found in packs by prunes the unpacked objects that are also found in packs by
running 'git-prune-packed'. running 'git prune-packed'.
Note that unreachable, packed objects will remain. If this is Note that unreachable, packed objects will remain. If this is
not desired, see linkgit:git-repack[1]. not desired, see linkgit:git-repack[1].
@ -62,12 +62,12 @@ $ git prune $(cd ../another && $(git rev-parse --all))
Notes Notes
----- -----
In most cases, users will not need to call 'git-prune' directly, but In most cases, users will not need to call 'git prune' directly, but
should instead call 'git-gc', which handles pruning along with should instead call 'git gc', which handles pruning along with
many other housekeeping tasks. many other housekeeping tasks.
For a description of which objects are considered for pruning, see For a description of which objects are considered for pruning, see
'git-fsck''s --unreachable option. 'git fsck''s --unreachable option.
SEE ALSO SEE ALSO
-------- --------

View File

@ -13,16 +13,20 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
Runs 'git-fetch' with the given parameters, and calls 'git-merge' Runs 'git fetch' with the given parameters, and calls 'git merge'
to merge the retrieved head(s) into the current branch. to merge the retrieved head(s) into the current branch.
With `--rebase`, calls 'git-rebase' instead of 'git-merge'. With `--rebase`, calls 'git rebase' instead of 'git merge'.
Note that you can use `.` (current directory) as the Note that you can use `.` (current directory) as the
<repository> to pull from the local repository -- this is useful <repository> to pull from the local repository -- this is useful
when merging local branches into the current branch. when merging local branches into the current branch.
Also note that options meant for 'git-pull' itself and underlying Also note that options meant for 'git pull' itself and underlying
'git-merge' must be given before the options meant for 'git-fetch'. 'git merge' must be given before the options meant for 'git fetch'.
*Warning*: Running 'git pull' (actually, the underlying 'git merge')
with uncommitted changes is discouraged: while possible, it leaves you
in a state that is hard to back out of in the case of a conflict.
OPTIONS OPTIONS
------- -------
@ -148,7 +152,7 @@ $ git merge origin/next
If you tried a pull which resulted in a complex conflicts and If you tried a pull which resulted in a complex conflicts and
would want to start over, you can recover with 'git-reset'. would want to start over, you can recover with 'git reset'.
SEE ALSO SEE ALSO

View File

@ -10,7 +10,7 @@ SYNOPSIS
-------- --------
[verse] [verse]
'git push' [--all | --mirror | --tags] [-n | --dry-run] [--receive-pack=<git-receive-pack>] 'git push' [--all | --mirror | --tags] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
[--repo=<repository>] [-f | --force] [-v | --verbose] [--repo=<repository>] [-f | --force] [-v | --verbose] [-u | --set-upstream]
[<repository> <refspec>...] [<repository> <refspec>...]
DESCRIPTION DESCRIPTION
@ -91,6 +91,10 @@ nor in any Push line of the corresponding remotes file---see below).
will be tab-separated and sent to stdout instead of stderr. The full will be tab-separated and sent to stdout instead of stderr. The full
symbolic names of the refs will be given. symbolic names of the refs will be given.
--delete::
All listed refs are deleted from the remote repository. This is
the same as prefixing all refs with a colon.
--tags:: --tags::
All refs under `$GIT_DIR/refs/tags` are pushed, in All refs under `$GIT_DIR/refs/tags` are pushed, in
addition to refspecs explicitly listed on the command addition to refspecs explicitly listed on the command
@ -112,7 +116,7 @@ nor in any Push line of the corresponding remotes file---see below).
--repo=<repository>:: --repo=<repository>::
This option is only relevant if no <repository> argument is This option is only relevant if no <repository> argument is
passed in the invocation. In this case, 'git-push' derives the passed in the invocation. In this case, 'git push' derives the
remote name from the current branch: If it tracks a remote remote name from the current branch: If it tracks a remote
branch, then that remote repository is pushed to. Otherwise, branch, then that remote repository is pushed to. Otherwise,
the name "origin" is used. For this latter case, this option the name "origin" is used. For this latter case, this option
@ -126,11 +130,18 @@ git push --repo=public #2
+ +
is that #1 always pushes to "public" whereas #2 pushes to "public" is that #1 always pushes to "public" whereas #2 pushes to "public"
only if the current branch does not track a remote branch. This is only if the current branch does not track a remote branch. This is
useful if you write an alias or script around 'git-push'. useful if you write an alias or script around 'git push'.
-u::
--set-upstream::
For every branch that is up to date or successfully pushed, add
upstream (tracking) reference, used by argument-less
linkgit:git-pull[1] and other commands. For more information,
see 'branch.<name>.merge' in linkgit:git-config[1].
--thin:: --thin::
--no-thin:: --no-thin::
These options are passed to 'git-send-pack'. Thin These options are passed to 'git send-pack'. Thin
transfer spends extra cycles to minimize the number of transfer spends extra cycles to minimize the number of
objects to be sent and meant to be used on slower connection. objects to be sent and meant to be used on slower connection.

View File

@ -10,7 +10,7 @@ SYNOPSIS
-------- --------
'git read-tree' [[-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>] 'git read-tree' [[-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>]
[-u [--exclude-per-directory=<gitignore>] | -i]] [-u [--exclude-per-directory=<gitignore>] | -i]]
[--index-output=<file>] [--index-output=<file>] [--no-sparse-checkout]
<tree-ish1> [<tree-ish2> [<tree-ish3>]] <tree-ish1> [<tree-ish2> [<tree-ish3>]]
@ -25,8 +25,8 @@ fast-forward (i.e. 2-way) merge, or a 3-way merge, with the `-m`
flag. When used with `-m`, the `-u` flag causes it to also update flag. When used with `-m`, the `-u` flag causes it to also update
the files in the work tree with the result of the merge. the files in the work tree with the result of the merge.
Trivial merges are done by 'git-read-tree' itself. Only conflicting paths Trivial merges are done by 'git read-tree' itself. Only conflicting paths
will be in unmerged state when 'git-read-tree' returns. will be in unmerged state when 'git read-tree' returns.
OPTIONS OPTIONS
------- -------
@ -57,13 +57,13 @@ OPTIONS
Show the progress of checking files out. Show the progress of checking files out.
--trivial:: --trivial::
Restrict three-way merge by 'git-read-tree' to happen Restrict three-way merge by 'git read-tree' to happen
only if there is no file-level merging required, instead only if there is no file-level merging required, instead
of resolving merge for trivial cases and leaving of resolving merge for trivial cases and leaving
conflicting files unresolved in the index. conflicting files unresolved in the index.
--aggressive:: --aggressive::
Usually a three-way merge by 'git-read-tree' resolves Usually a three-way merge by 'git read-tree' resolves
the merge for really trivial cases and leaves other the merge for really trivial cases and leaves other
cases unresolved in the index, so that Porcelains can cases unresolved in the index, so that Porcelains can
implement different merge policies. This flag makes the implement different merge policies. This flag makes the
@ -110,13 +110,17 @@ OPTIONS
directories the index file and index output file are directories the index file and index output file are
located in. located in.
--no-sparse-checkout::
Disable sparse checkout support even if `core.sparseCheckout`
is true.
<tree-ish#>:: <tree-ish#>::
The id of the tree object(s) to be read/merged. The id of the tree object(s) to be read/merged.
Merging Merging
------- -------
If `-m` is specified, 'git-read-tree' can perform 3 kinds of If `-m` is specified, 'git read-tree' can perform 3 kinds of
merge, a single tree merge if only 1 tree is given, a merge, a single tree merge if only 1 tree is given, a
fast-forward merge with 2 trees, or a 3-way merge if 3 trees are fast-forward merge with 2 trees, or a 3-way merge if 3 trees are
provided. provided.
@ -124,18 +128,18 @@ provided.
Single Tree Merge Single Tree Merge
~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
If only 1 tree is specified, 'git-read-tree' operates as if the user did not If only 1 tree is specified, 'git read-tree' operates as if the user did not
specify `-m`, except that if the original index has an entry for a specify `-m`, except that if the original index has an entry for a
given pathname, and the contents of the path matches with the tree given pathname, and the contents of the path matches with the tree
being read, the stat info from the index is used. (In other words, the being read, the stat info from the index is used. (In other words, the
index's stat()s take precedence over the merged tree's). index's stat()s take precedence over the merged tree's).
That means that if you do a `git read-tree -m <newtree>` followed by a That means that if you do a `git read-tree -m <newtree>` followed by a
`git checkout-index -f -u -a`, the 'git-checkout-index' only checks out `git checkout-index -f -u -a`, the 'git checkout-index' only checks out
the stuff that really changed. the stuff that really changed.
This is used to avoid unnecessary false hits when 'git-diff-files' is This is used to avoid unnecessary false hits when 'git diff-files' is
run after 'git-read-tree'. run after 'git read-tree'.
Two Tree Merge Two Tree Merge
@ -146,7 +150,7 @@ is the head commit of the current repository, and $M is the head
of a foreign tree, which is simply ahead of $H (i.e. we are in a of a foreign tree, which is simply ahead of $H (i.e. we are in a
fast-forward situation). fast-forward situation).
When two trees are specified, the user is telling 'git-read-tree' When two trees are specified, the user is telling 'git read-tree'
the following: the following:
1. The current index and work tree is derived from $H, but 1. The current index and work tree is derived from $H, but
@ -199,10 +203,10 @@ Here are the "carry forward" rules:
In all "keep index" cases, the index entry stays as in the In all "keep index" cases, the index entry stays as in the
original index file. If the entry were not up to date, original index file. If the entry were not up to date,
'git-read-tree' keeps the copy in the work tree intact when 'git read-tree' keeps the copy in the work tree intact when
operating under the -u flag. operating under the -u flag.
When this form of 'git-read-tree' returns successfully, you can When this form of 'git read-tree' returns successfully, you can
see what "local changes" you made are carried forward by running see what "local changes" you made are carried forward by running
`git diff-index --cached $M`. Note that this does not `git diff-index --cached $M`. Note that this does not
necessarily match `git diff-index --cached $H` would have necessarily match `git diff-index --cached $H` would have
@ -225,7 +229,7 @@ of the path is kept as long as $H and $M are the same.
Each "index" entry has two bits worth of "stage" state. stage 0 is the Each "index" entry has two bits worth of "stage" state. stage 0 is the
normal one, and is the only one you'd see in any kind of normal use. normal one, and is the only one you'd see in any kind of normal use.
However, when you do 'git-read-tree' with three trees, the "stage" However, when you do 'git read-tree' with three trees, the "stage"
starts out at 1. starts out at 1.
This means that you can do This means that you can do
@ -241,7 +245,7 @@ branch into the current branch, we use the common ancestor tree
as <tree1>, the current branch head as <tree2>, and the other as <tree1>, the current branch head as <tree2>, and the other
branch head as <tree3>. branch head as <tree3>.
Furthermore, 'git-read-tree' has special-case logic that says: if you see Furthermore, 'git read-tree' has special-case logic that says: if you see
a file that matches in all respects in the following states, it a file that matches in all respects in the following states, it
"collapses" back to "stage0": "collapses" back to "stage0":
@ -257,7 +261,7 @@ a file that matches in all respects in the following states, it
- stage 1 and stage 3 are the same and stage 2 is different take - stage 1 and stage 3 are the same and stage 2 is different take
stage 2 (we did something while they did nothing) stage 2 (we did something while they did nothing)
The 'git-write-tree' command refuses to write a nonsensical tree, and it The 'git write-tree' command refuses to write a nonsensical tree, and it
will complain about unmerged entries if it sees a single entry that is not will complain about unmerged entries if it sees a single entry that is not
stage 0. stage 0.
@ -273,7 +277,7 @@ start a 3-way merge with an index file that is already
populated. Here is an outline of how the algorithm works: populated. Here is an outline of how the algorithm works:
- if a file exists in identical format in all three trees, it will - if a file exists in identical format in all three trees, it will
automatically collapse to "merged" state by 'git-read-tree'. automatically collapse to "merged" state by 'git read-tree'.
- a file that has _any_ difference what-so-ever in the three trees - a file that has _any_ difference what-so-ever in the three trees
will stay as separate entries in the index. It's up to "porcelain will stay as separate entries in the index. It's up to "porcelain
@ -297,8 +301,8 @@ populated. Here is an outline of how the algorithm works:
matching "stage1" entry if it exists too. .. all the normal matching "stage1" entry if it exists too. .. all the normal
trivial rules .. trivial rules ..
You would normally use 'git-merge-index' with supplied You would normally use 'git merge-index' with supplied
'git-merge-one-file' to do this last step. The script updates 'git merge-one-file' to do this last step. The script updates
the files in the working tree as it merges each path and at the the files in the working tree as it merges each path and at the
end of a successful merge. end of a successful merge.
@ -320,7 +324,7 @@ $ JC=`git rev-parse --verify "HEAD^0"`
$ git checkout-index -f -u -a $JC $ git checkout-index -f -u -a $JC
---------------- ----------------
You do random edits, without running 'git-update-index'. And then You do random edits, without running 'git update-index'. And then
you notice that the tip of your "upstream" tree has advanced you notice that the tip of your "upstream" tree has advanced
since you pulled from him: since you pulled from him:
@ -346,20 +350,66 @@ your work-in-progress changes, and your work tree would be
updated to the result of the merge. updated to the result of the merge.
However, if you have local changes in the working tree that However, if you have local changes in the working tree that
would be overwritten by this merge, 'git-read-tree' will refuse would be overwritten by this merge, 'git read-tree' will refuse
to run to prevent your changes from being lost. to run to prevent your changes from being lost.
In other words, there is no need to worry about what exists only In other words, there is no need to worry about what exists only
in the working tree. When you have local changes in a part of in the working tree. When you have local changes in a part of
the project that is not involved in the merge, your changes do the project that is not involved in the merge, your changes do
not interfere with the merge, and are kept intact. When they not interfere with the merge, and are kept intact. When they
*do* interfere, the merge does not even start ('git-read-tree' *do* interfere, the merge does not even start ('git read-tree'
complains loudly and fails without modifying anything). In such complains loudly and fails without modifying anything). In such
a case, you can simply continue doing what you were in the a case, you can simply continue doing what you were in the
middle of doing, and when your working tree is ready (i.e. you middle of doing, and when your working tree is ready (i.e. you
have finished your work-in-progress), attempt the merge again. have finished your work-in-progress), attempt the merge again.
Sparse checkout
---------------
"Sparse checkout" allows to sparsely populate working directory.
It uses skip-worktree bit (see linkgit:git-update-index[1]) to tell
Git whether a file on working directory is worth looking at.
"git read-tree" and other merge-based commands ("git merge", "git
checkout"...) can help maintaining skip-worktree bitmap and working
directory update. `$GIT_DIR/info/sparse-checkout` is used to
define the skip-worktree reference bitmap. When "git read-tree" needs
to update working directory, it will reset skip-worktree bit in index
based on this file, which uses the same syntax as .gitignore files.
If an entry matches a pattern in this file, skip-worktree will be
set on that entry. Otherwise, skip-worktree will be unset.
Then it compares the new skip-worktree value with the previous one. If
skip-worktree turns from unset to set, it will add the corresponding
file back. If it turns from set to unset, that file will be removed.
While `$GIT_DIR/info/sparse-checkout` is usually used to specify what
files are in. You can also specify what files are _not_ in, using
negate patterns. For example, to remove file "unwanted":
----------------
*
!unwanted
----------------
Another tricky thing is fully repopulating working directory when you
no longer want sparse checkout. You cannot just disable "sparse
checkout" because skip-worktree are still in the index and you working
directory is still sparsely populated. You should re-populate working
directory with the `$GIT_DIR/info/sparse-checkout` file content as
follows:
----------------
*
----------------
Then you can disable sparse checkout. Sparse checkout support in "git
read-tree" and similar commands is disabled by default. You need to
turn `core.sparseCheckout` on in order to have sparse checkout
support.
SEE ALSO SEE ALSO
-------- --------
linkgit:git-write-tree[1]; linkgit:git-ls-files[1]; linkgit:git-write-tree[1]; linkgit:git-ls-files[1];

View File

@ -17,7 +17,7 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
If <branch> is specified, 'git-rebase' will perform an automatic If <branch> is specified, 'git rebase' will perform an automatic
`git checkout <branch>` before doing anything else. Otherwise `git checkout <branch>` before doing anything else. Otherwise
it remains on the current branch. it remains on the current branch.
@ -170,8 +170,8 @@ This is useful if F and G were flawed in some way, or should not be
part of topicA. Note that the argument to --onto and the <upstream> part of topicA. Note that the argument to --onto and the <upstream>
parameter can be any valid commit-ish. 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
@ -187,7 +187,7 @@ desired resolution, you can continue the rebasing process with
git rebase --continue git rebase --continue
Alternatively, you can undo the 'git-rebase' with Alternatively, you can undo the 'git rebase' with
git rebase --abort git rebase --abort
@ -238,10 +238,10 @@ other words, the sides are swapped.
-s <strategy>:: -s <strategy>::
--strategy=<strategy>:: --strategy=<strategy>::
Use the given merge strategy. Use the given merge strategy.
If there is no `-s` option 'git-merge-recursive' is used If there is no `-s` option 'git merge-recursive' is used
instead. This implies --merge. instead. This implies --merge.
+ +
Because 'git-rebase' replays each commit from the working branch Because 'git rebase' replays each commit from the working branch
on top of the <upstream> branch using the given strategy, using on top of the <upstream> branch using the given strategy, using
the 'ours' strategy simply discards all patches from the <branch>, the 'ours' strategy simply discards all patches from the <branch>,
which makes little sense. which makes little sense.
@ -280,13 +280,13 @@ which makes little sense.
--ignore-whitespace:: --ignore-whitespace::
--whitespace=<option>:: --whitespace=<option>::
These flag are passed to the 'git-apply' program These flag are passed to the 'git apply' program
(see linkgit:git-apply[1]) that applies the patch. (see linkgit:git-apply[1]) that applies the patch.
Incompatible with the --interactive option. Incompatible with the --interactive option.
--committer-date-is-author-date:: --committer-date-is-author-date::
--ignore-date:: --ignore-date::
These flags are passed to 'git-am' to easily change the dates These flags are passed to 'git am' to easily change the dates
of the rebased commits (see linkgit:git-am[1]). of the rebased commits (see linkgit:git-am[1]).
-i:: -i::
@ -308,12 +308,22 @@ which makes little sense.
root commits will be rewritten to have <newbase> as parent root commits will be rewritten to have <newbase> as parent
instead. instead.
--autosquash::
When the commit log message begins with "squash! ..." (or
"fixup! ..."), and there is a commit whose title begins with
the same ..., automatically modify the todo list of rebase -i
so that the commit marked for squashing comes right after the
commit to be modified, and change the action of the moved
commit from `pick` to `squash` (or `fixup`).
+
This option is only valid when '--interactive' option is used.
include::merge-strategies.txt[] include::merge-strategies.txt[]
NOTES NOTES
----- -----
You should understand the implications of using 'git-rebase' on a You should understand the implications of using 'git rebase' on a
repository that you share. See also RECOVERING FROM UPSTREAM REBASE repository that you share. See also RECOVERING FROM UPSTREAM REBASE
below. below.
@ -369,12 +379,12 @@ pick fa1afe1 The oneline of the next commit
... ...
------------------------------------------- -------------------------------------------
The oneline descriptions are purely for your pleasure; 'git-rebase' will The oneline descriptions are purely for your pleasure; 'git rebase' will
not look at them but at the commit names ("deadbee" and "fa1afe1" in this not look at them but at the commit names ("deadbee" and "fa1afe1" in this
example), so do not delete or edit the names. example), so do not delete or edit the names.
By replacing the command "pick" with the command "edit", you can tell By replacing the command "pick" with the command "edit", you can tell
'git-rebase' to stop after applying that commit, so that you can edit 'git rebase' to stop after applying that commit, so that you can edit
the files and/or the commit message, amend the commit, and continue the files and/or the commit message, amend the commit, and continue
rebasing. rebasing.
@ -382,17 +392,20 @@ If you just want to edit the commit message for a commit, replace the
command "pick" with the command "reword". command "pick" with the command "reword".
If you want to fold two or more commits into one, replace the command If you want to fold two or more commits into one, replace the command
"pick" with "squash" for the second and subsequent commit. If the "pick" for the second and subsequent commits with "squash" or "fixup".
commits had different authors, it will attribute the squashed commit to If the commits had different authors, the folded commit will be
the author of the first commit. attributed to the author of the first commit. The suggested commit
message for the folded commit is the concatenation of the commit
messages of the first commit and of those with the "squash" command,
but omits the commit messages of commits with the "fixup" command.
'git-rebase' will stop when "pick" has been replaced with "edit" or 'git rebase' will stop when "pick" has been replaced with "edit" or
when a command fails due to merge errors. When you are done editing when a command fails due to merge errors. When you are done editing
and/or resolving conflicts you can continue with `git rebase --continue`. and/or resolving conflicts you can continue with `git rebase --continue`.
For example, if you want to reorder the last 5 commits, such that what For example, if you want to reorder the last 5 commits, such that what
was HEAD~4 becomes the new HEAD. To achieve that, you would call was HEAD~4 becomes the new HEAD. To achieve that, you would call
'git-rebase' like this: 'git rebase' like this:
---------------------- ----------------------
$ git rebase -i HEAD~5 $ git rebase -i HEAD~5
@ -422,7 +435,7 @@ SPLITTING COMMITS
----------------- -----------------
In interactive mode, you can mark commits with the action "edit". However, In interactive mode, you can mark commits with the action "edit". However,
this does not necessarily mean that 'git-rebase' expects the result of this this does not necessarily mean that 'git rebase' expects the result of this
edit to be exactly one commit. Indeed, you can undo the commit, or you can edit to be exactly one commit. Indeed, you can undo the commit, or you can
add other commits. This can be used to split a commit into two: add other commits. This can be used to split a commit into two:
@ -438,7 +451,7 @@ add other commits. This can be used to split a commit into two:
- Now add the changes to the index that you want to have in the first - Now add the changes to the index that you want to have in the first
commit. You can use `git add` (possibly interactively) or commit. You can use `git add` (possibly interactively) or
'git-gui' (or both) to do that. 'git gui' (or both) to do that.
- Commit the now-current index with whatever commit message is appropriate - Commit the now-current index with whatever commit message is appropriate
now. now.
@ -449,7 +462,7 @@ add other commits. This can be used to split a commit into two:
If you are not absolutely sure that the intermediate revisions are If you are not absolutely sure that the intermediate revisions are
consistent (they compile, pass the testsuite, etc.) you should use consistent (they compile, pass the testsuite, etc.) you should use
'git-stash' to stash away the not-yet-committed changes 'git stash' to stash away the not-yet-committed changes
after each commit, test, and amend the commit if fixes are necessary. after each commit, test, and amend the commit if fixes are necessary.
@ -512,8 +525,8 @@ Easy case: The changes are literally the same.::
Hard case: The changes are not the same.:: Hard case: The changes are not the same.::
This happens if the 'subsystem' rebase had conflicts, or used This happens if the 'subsystem' rebase had conflicts, or used
`\--interactive` to omit, edit, or squash commits; or if the `\--interactive` to omit, edit, squash, or fixup commits; or
upstream used one of `commit \--amend`, `reset`, or if the upstream used one of `commit \--amend`, `reset`, or
`filter-branch`. `filter-branch`.
@ -524,7 +537,7 @@ Only works if the changes (patch IDs based on the diff contents) on
'subsystem' are literally the same before and after the rebase 'subsystem' are literally the same before and after the rebase
'subsystem' did. 'subsystem' did.
In that case, the fix is easy because 'git-rebase' knows to skip In that case, the fix is easy because 'git rebase' knows to skip
changes that are already present in the new upstream. So if you say changes that are already present in the new upstream. So if you say
(assuming you're on 'topic') (assuming you're on 'topic')
------------ ------------
@ -551,12 +564,12 @@ NOTE: While an "easy case recovery" sometimes appears to be successful
example, a commit that was removed via `git rebase example, a commit that was removed via `git rebase
\--interactive` will be **resurrected**! \--interactive` will be **resurrected**!
The idea is to manually tell 'git-rebase' "where the old 'subsystem' The idea is to manually tell 'git rebase' "where the old 'subsystem'
ended and your 'topic' began", that is, what the old merge-base ended and your 'topic' began", that is, what the old merge-base
between them was. You will have to find a way to name the last commit between them was. You will have to find a way to name the last commit
of the old 'subsystem', for example: of the old 'subsystem', for example:
* With the 'subsystem' reflog: after 'git-fetch', the old tip of * With the 'subsystem' reflog: after 'git fetch', the old tip of
'subsystem' is at `subsystem@\{1}`. Subsequent fetches will 'subsystem' is at `subsystem@\{1}`. Subsequent fetches will
increase the number. (See linkgit:git-reflog[1].) increase the number. (See linkgit:git-reflog[1].)

View File

@ -8,15 +8,15 @@ git-receive-pack - Receive what is pushed into the repository
SYNOPSIS SYNOPSIS
-------- --------
'git receive-pack' <directory> 'git-receive-pack' <directory>
DESCRIPTION DESCRIPTION
----------- -----------
Invoked by 'git-send-pack' and updates the repository with the Invoked by 'git send-pack' and updates the repository with the
information fed from the remote end. information fed from the remote end.
This command is usually not invoked directly by the end user. This command is usually not invoked directly by the end user.
The UI for the protocol is on the 'git-send-pack' side, and the The UI for the protocol is on the 'git send-pack' side, and the
program pair is meant to be used to push updates to remote program pair is meant to be used to push updates to remote
repository. For pull operations, see linkgit:git-fetch-pack[1]. repository. For pull operations, see linkgit:git-fetch-pack[1].

View File

@ -60,7 +60,7 @@ OPTIONS
refs. refs.
+ +
This computation involves traversing all the reachable objects, i.e. it This computation involves traversing all the reachable objects, i.e. it
has the same cost as 'git-prune'. Fortunately, once this is run, we has the same cost as 'git prune'. Fortunately, once this is run, we
should not have to ever worry about missing objects, because the current should not have to ever worry about missing objects, because the current
prune and pack-objects know about reflogs and protect objects referred by prune and pack-objects know about reflogs and protect objects referred by
them. them.

View File

@ -25,7 +25,10 @@ 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. with a blank line. Each capability may be preceeded with '*'.
This marks them mandatory for git version using the remote
helper to understand (unknown mandatory capability is fatal
error).
'list':: 'list'::
Lists the refs, one per line, in the format "<value> <name> Lists the refs, one per line, in the format "<value> <name>
@ -79,6 +82,31 @@ style string if it contains an LF.
+ +
Supported if the helper has the "push" capability. Supported if the helper has the "push" capability.
'import' <name>::
Produces a fast-import stream which imports the current value
of the named ref. It may additionally import other refs as
needed to construct the history efficiently. The script writes
to a helper-specific private namespace. The value of the named
ref should be written to a location in this namespace derived
by applying the refspecs from the "refspec" capability to the
name of the ref.
+
Supported if the helper has the "import" capability.
'connect' <service>::
Connects to given service. Standard input and standard output
of helper are connected to specified service (git prefix is
included in service name so e.g. fetching uses 'git-upload-pack'
as service) on remote side. Valid replies to this command are
empty line (connection established), 'fallback' (no smart
transport support, fall back to dumb transports) and just
exiting with error message printed (can't connect, don't
bother trying to fall back). After line feed terminating the
positive (empty) response, the output of service starts. After
the connection ends, the remote helper exits.
+
Supported if the helper has the "connect" capability.
If a fatal error occurs, the program writes the error message to If a fatal error occurs, the program writes the error message to
stderr and exits. The caller should expect that a suitable error stderr and exits. The caller should expect that a suitable error
message has been printed if the child closes the connection without message has been printed if the child closes the connection without
@ -99,6 +127,22 @@ CAPABILITIES
'push':: 'push'::
This helper supports the 'push' command. This helper supports the 'push' command.
'import'::
This helper supports the 'import' command.
'refspec' 'spec'::
When using the import command, expect the source ref to have
been written to the destination ref. The earliest applicable
refspec takes precedence. For example
"refs/heads/*:refs/svn/origin/branches/*" means that, after an
"import refs/heads/name", the script has written to
refs/svn/origin/branches/name. If this capability is used at
all, it must cover all refs reported by the list command; if
it is not used, it is effectively "*:*"
'connect'::
This helper supports the 'connect' command.
REF LIST ATTRIBUTES REF LIST ATTRIBUTES
------------------- -------------------
@ -107,6 +151,10 @@ REF LIST ATTRIBUTES
commands. A helper might chose to acquire the ref list by commands. A helper might chose to acquire the ref list by
opening a different type of connection to the destination. opening a different type of connection to the destination.
'unchanged'::
This ref is unchanged since the last import or fetch, although
the helper cannot necessarily determine what value that produced.
OPTIONS OPTIONS
------- -------
'option verbosity' <N>:: 'option verbosity' <N>::
@ -137,9 +185,15 @@ OPTIONS
but don't actually change any repository data. For most but don't actually change any repository data. For most
helpers this only applies to the 'push', if supported. helpers this only applies to the 'push', if supported.
'option servpath <c-style-quoted-path>'::
Set service path (--upload-pack, --receive-pack etc.) for
next connect. Remote helper MAY support this option. Remote
helper MUST NOT rely on this option being set before
connect request occurs.
Documentation Documentation
------------- -------------
Documentation by Daniel Barkalow. Documentation by Daniel Barkalow and Ilari Liusvaara
GIT GIT
--- ---

View File

@ -14,6 +14,9 @@ SYNOPSIS
'git remote rename' <old> <new> 'git remote rename' <old> <new>
'git remote rm' <name> 'git remote rm' <name>
'git remote set-head' <name> (-a | -d | <branch>) 'git remote set-head' <name> (-a | -d | <branch>)
'git remote set-url' [--push] <name> <newurl> [<oldurl>]
'git remote set-url --add' [--push] <name> <newurl>
'git remote set-url --delete' [--push] <name> <url>
'git remote' [-v | --verbose] 'show' [-n] <name> 'git remote' [-v | --verbose] 'show' [-n] <name>
'git remote prune' [-n | --dry-run] <name> 'git remote prune' [-n | --dry-run] <name>
'git remote' [-v | --verbose] 'update' [-p | --prune] [group | remote]... 'git remote' [-v | --verbose] 'update' [-p | --prune] [group | remote]...
@ -101,6 +104,20 @@ remote set-head origin master" will set `$GIT_DIR/refs/remotes/origin/HEAD` to
`refs/remotes/origin/master` already exists; if not it must be fetched first. `refs/remotes/origin/master` already exists; if not it must be fetched first.
+ +
'set-url'::
Changes URL remote points to. Sets first URL remote points to matching
regex <oldurl> (first URL if no <oldurl> is given) to <newurl>. If
<oldurl> doesn't match any URL, error occurs and nothing is changed.
+
With '--push', push URLs are manipulated instead of fetch URLs.
+
With '--add', instead of changing some URL, new URL is added.
+
With '--delete', instead of changing some URL, all URLs matching
regex <url> are deleted. Trying to delete all non-push URLs is an
error.
'show':: 'show'::
Gives some information about the remote <name>. Gives some information about the remote <name>.
@ -161,7 +178,7 @@ $ git checkout -b nfs linux-nfs/master
... ...
------------ ------------
* Imitate 'git-clone' but track only selected branches * Imitate 'git clone' but track only selected branches
+ +
------------ ------------
$ mkdir project.git $ mkdir project.git

View File

@ -49,16 +49,16 @@ other objects in that pack they already have locally.
deleted by way of being left in the old pack and then deleted by way of being left in the old pack and then
removed. Instead, the loose unreachable objects removed. Instead, the loose unreachable objects
will be pruned according to normal expiry rules will be pruned according to normal expiry rules
with the next 'git-gc' invocation. See linkgit:git-gc[1]. with the next 'git gc' invocation. See linkgit:git-gc[1].
-d:: -d::
After packing, if the newly created packs make some After packing, if the newly created packs make some
existing packs redundant, remove the redundant packs. existing packs redundant, remove the redundant packs.
Also run 'git-prune-packed' to remove redundant Also run 'git prune-packed' to remove redundant
loose object files. loose object files.
-l:: -l::
Pass the `--local` option to 'git-pack-objects'. See Pass the `--local` option to 'git pack-objects'. See
linkgit:git-pack-objects[1]. linkgit:git-pack-objects[1].
-f:: -f::
@ -66,12 +66,12 @@ other objects in that pack they already have locally.
linkgit:git-pack-objects[1]. linkgit:git-pack-objects[1].
-q:: -q::
Pass the `-q` option to 'git-pack-objects'. See Pass the `-q` option to 'git pack-objects'. See
linkgit:git-pack-objects[1]. linkgit:git-pack-objects[1].
-n:: -n::
Do not update the server information with Do not update the server information with
'git-update-server-info'. This option skips 'git update-server-info'. This option skips
updating local catalog files needed to publish updating local catalog files needed to publish
this repository (or a direct copy of it) this repository (or a direct copy of it)
over HTTP or FTP. See linkgit:git-update-server-info[1]. over HTTP or FTP. See linkgit:git-update-server-info[1].
@ -109,7 +109,7 @@ Configuration
When configuration variable `repack.UseDeltaBaseOffset` is set When configuration variable `repack.UseDeltaBaseOffset` is set
for the repository, the command passes `--delta-base-offset` for the repository, the command passes `--delta-base-offset`
option to 'git-pack-objects'; this typically results in slightly option to 'git pack-objects'; this typically results in slightly
smaller packs, but the generated packs are incompatible with smaller packs, but the generated packs are incompatible with
versions of git older than (and including) v1.4.3; do not set versions of git older than (and including) v1.4.3; do not set
the variable in a repository that older version of git needs to the variable in a repository that older version of git needs to

View File

@ -65,7 +65,7 @@ OPTIONS
BUGS BUGS
---- ----
Comparing blobs or trees that have been replaced with those that Comparing blobs or trees that have been replaced with those that
replace them will not work properly. And using 'git reset --hard' to replace them will not work properly. And using `git reset --hard` to
go back to a replaced commit will move the branch to the replacement go back to a replaced commit will move the branch to the replacement
commit instead of the replaced commit. commit instead of the replaced commit.

View File

@ -30,14 +30,14 @@ enable this command.
COMMANDS COMMANDS
-------- --------
Normally, 'git-rerere' is run without arguments or user-intervention. Normally, 'git rerere' is run without arguments or user-intervention.
However, it has several commands that allow it to interact with However, it has several commands that allow it to interact with
its working state. its working state.
'clear':: 'clear'::
This resets the metadata used by rerere if a merge resolution is to be This resets the metadata used by rerere if a merge resolution is to be
aborted. Calling 'git-am [--skip|--abort]' or 'git-rebase [--skip|--abort]' aborted. Calling 'git am [--skip|--abort]' or 'git rebase [--skip|--abort]'
will automatically invoke this command. will automatically invoke this command.
'diff':: 'diff'::
@ -142,32 +142,32 @@ finally ready and merged into the master branch. This merge
would require you to resolve the conflict, introduced by the would require you to resolve the conflict, introduced by the
commits marked with `*`. However, this conflict is often the commits marked with `*`. However, this conflict is often the
same conflict you resolved when you created the test merge you same conflict you resolved when you created the test merge you
blew away. 'git-rerere' helps you resolve this final blew away. 'git rerere' helps you resolve this final
conflicted merge using the information from your earlier hand conflicted merge using the information from your earlier hand
resolve. resolve.
Running the 'git-rerere' command immediately after a conflicted Running the 'git rerere' command immediately after a conflicted
automerge records the conflicted working tree files, with the automerge records the conflicted working tree files, with the
usual conflict markers `<<<<<<<`, `=======`, and `>>>>>>>` in usual conflict markers `<<<<<<<`, `=======`, and `>>>>>>>` in
them. Later, after you are done resolving the conflicts, them. Later, after you are done resolving the conflicts,
running 'git-rerere' again will record the resolved state of these running 'git rerere' again will record the resolved state of these
files. Suppose you did this when you created the test merge of files. Suppose you did this when you created the test merge of
master into the topic branch. master into the topic branch.
Next time, after seeing the same conflicted automerge, Next time, after seeing the same conflicted automerge,
running 'git-rerere' will perform a three-way merge between the running 'git rerere' will perform a three-way merge between the
earlier conflicted automerge, the earlier manual resolution, and earlier conflicted automerge, the earlier manual resolution, and
the current conflicted automerge. the current conflicted automerge.
If this three-way merge resolves cleanly, the result is written If this three-way merge resolves cleanly, the result is written
out to your working tree file, so you do not have to manually out to your working tree file, so you do not have to manually
resolve it. Note that 'git-rerere' leaves the index file alone, resolve it. Note that 'git rerere' leaves the index file alone,
so you still need to do the final sanity checks with `git diff` so you still need to do the final sanity checks with `git diff`
(or `git diff -c`) and 'git-add' when you are satisfied. (or `git diff -c`) and 'git add' when you are satisfied.
As a convenience measure, 'git-merge' automatically invokes As a convenience measure, 'git merge' automatically invokes
'git-rerere' upon exiting with a failed automerge and 'git-rerere' 'git rerere' upon exiting with a failed automerge and 'git rerere'
records the hand resolve when it is a new conflict, or reuses the earlier hand records the hand resolve when it is a new conflict, or reuses the earlier hand
resolve when it is not. 'git-commit' also invokes 'git-rerere' resolve when it is not. 'git commit' also invokes 'git rerere'
when committing a merge result. What this means is that you do when committing a merge result. What this means is that you do
not have to do anything special yourself (besides enabling not have to do anything special yourself (besides enabling
the rerere.enabled config variable). the rerere.enabled config variable).
@ -177,8 +177,8 @@ resolution is recorded, and it will be reused when you do the
actual merge later with the updated master and topic branch, as long actual merge later with the updated master and topic branch, as long
as the recorded resolution is still applicable. as the recorded resolution is still applicable.
The information 'git-rerere' records is also used when running The information 'git rerere' records is also used when running
'git-rebase'. After blowing away the test merge and continuing 'git rebase'. After blowing away the test merge and continuing
development on the topic branch: development on the topic branch:
------------ ------------
@ -197,7 +197,7 @@ you could run `git rebase master topic`, to bring yourself
up-to-date before your topic is ready to be sent upstream. up-to-date before your topic is ready to be sent upstream.
This would result in falling back to a three-way merge, and it This would result in falling back to a three-way merge, and it
would conflict the same way as the test merge you resolved earlier. would conflict the same way as the test merge you resolved earlier.
'git-rerere' will be run by 'git-rebase' to help you resolve this 'git rerere' will be run by 'git rebase' to help you resolve this
conflict. conflict.

View File

@ -39,7 +39,7 @@ OPTIONS
--soft:: --soft::
Does not touch the index file nor the working tree at all, but Does not touch the index file nor the working tree at all, but
requires them to be in a good order. This leaves all your changed requires them to be in a good order. This leaves all your changed
files "Changes to be committed", as 'git-status' would files "Changes to be committed", as 'git status' would
put it. put it.
--hard:: --hard::
@ -62,11 +62,101 @@ This means that `git reset -p` is the opposite of `git add -p` (see
linkgit:git-add[1]). linkgit:git-add[1]).
-q:: -q::
--quiet::
Be quiet, only report errors. Be quiet, only report errors.
<commit>:: <commit>::
Commit to make the current HEAD. If not given defaults to HEAD. Commit to make the current HEAD. If not given defaults to HEAD.
DISCUSSION
----------
The tables below show what happens when running:
----------
git reset --option target
----------
to reset the HEAD to another commit (`target`) with the different
reset options depending on the state of the files.
In these tables, A, B, C and D are some different states of a
file. For example, the first line of the first table means that if a
file is in state A in the working tree, in state B in the index, in
state C in HEAD and in state D in the target, then "git reset --soft
target" will put the file in state A in the working tree, in state B
in the index and in state D in HEAD.
working index HEAD target working index HEAD
----------------------------------------------------
A B C D --soft A B D
--mixed A D D
--hard D D D
--merge (disallowed)
working index HEAD target working index HEAD
----------------------------------------------------
A B C C --soft A B C
--mixed A C C
--hard C C C
--merge (disallowed)
working index HEAD target working index HEAD
----------------------------------------------------
B B C D --soft B B D
--mixed B D D
--hard D D D
--merge D D D
working index HEAD target working index HEAD
----------------------------------------------------
B B C C --soft B B C
--mixed B C C
--hard C C C
--merge C C C
working index HEAD target working index HEAD
----------------------------------------------------
B C C D --soft B C D
--mixed B D D
--hard D D D
--merge (disallowed)
working index HEAD target working index HEAD
----------------------------------------------------
B C C C --soft B C C
--mixed B C C
--hard C C C
--merge B C C
"reset --merge" is meant to be used when resetting out of a conflicted
merge. Any mergy operation guarantees that the work tree file that is
involved in the merge does not have local change wrt the index before
it starts, and that it writes the result out to the work tree. So if
we see some difference between the index and the target and also
between the index and the work tree, then it means that we are not
resetting out from a state that a mergy operation left after failing
with a conflict. That is why we disallow --merge option in this case.
The following tables show what happens when there are unmerged
entries:
working index HEAD target working index HEAD
----------------------------------------------------
X U A B --soft (disallowed)
--mixed X B B
--hard B B B
--merge B B B
working index HEAD target working index HEAD
----------------------------------------------------
X U A A --soft (disallowed)
--mixed X A A
--hard A A A
--merge A A A
X means any state and U means an unmerged index.
Examples Examples
-------- --------

View File

@ -9,7 +9,7 @@ git-rev-list - Lists commit objects in reverse chronological order
SYNOPSIS SYNOPSIS
-------- --------
[verse] [verse]
'git-rev-list' [ \--max-count=number ] 'git rev-list' [ \--max-count=number ]
[ \--skip=number ] [ \--skip=number ]
[ \--max-age=timestamp ] [ \--max-age=timestamp ]
[ \--min-age=timestamp ] [ \--min-age=timestamp ]
@ -21,9 +21,10 @@ SYNOPSIS
[ \--full-history ] [ \--full-history ]
[ \--not ] [ \--not ]
[ \--all ] [ \--all ]
[ \--branches ] [ \--branches[=pattern] ]
[ \--tags ] [ \--tags[=pattern] ]
[ \--remotes ] [ \--remotes[=pattern] ]
[ \--glob=glob-pattern ]
[ \--stdin ] [ \--stdin ]
[ \--quiet ] [ \--quiet ]
[ \--topo-order ] [ \--topo-order ]
@ -93,8 +94,8 @@ between the two operands. The following two commands are equivalent:
'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
'git-repack'. 'git repack'.
OPTIONS OPTIONS
------- -------

View File

@ -15,16 +15,16 @@ 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
downstream of 'git-rev-list'. This command is used to downstream of 'git rev-list'. This command is used to
distinguish between them. distinguish between them.
OPTIONS OPTIONS
------- -------
--parseopt:: --parseopt::
Use 'git-rev-parse' in option parsing mode (see PARSEOPT section below). Use 'git rev-parse' in option parsing mode (see PARSEOPT section below).
--keep-dashdash:: --keep-dashdash::
Only meaningful in `--parseopt` mode. Tells the option parser to echo Only meaningful in `--parseopt` mode. Tells the option parser to echo
@ -36,17 +36,17 @@ OPTIONS
that take options themself. that take options themself.
--sq-quote:: --sq-quote::
Use 'git-rev-parse' in shell quoting mode (see SQ-QUOTE Use 'git rev-parse' in shell quoting mode (see SQ-QUOTE
section below). In contrast to the `--sq` option below, this section below). In contrast to the `--sq` option below, this
mode does only quoting. Nothing else is done to command input. mode does only quoting. Nothing else is done to command input.
--revs-only:: --revs-only::
Do not output flags and parameters not meant for Do not output flags and parameters not meant for
'git-rev-list' command. 'git rev-list' command.
--no-revs:: --no-revs::
Do not output flags and parameters meant for Do not output flags and parameters meant for
'git-rev-list' command. 'git rev-list' command.
--flags:: --flags::
Do not output non-flag parameters. Do not output non-flag parameters.
@ -74,7 +74,7 @@ OPTIONS
properly quoted for consumption by shell. Useful when properly quoted for consumption by shell. Useful when
you expect your parameter to contain whitespaces and you expect your parameter to contain whitespaces and
newlines (e.g. when using pickaxe `-S` with newlines (e.g. when using pickaxe `-S` with
'git-diff-\*'). In contrast to the `--sq-quote` option, 'git diff-\*'). In contrast to the `--sq-quote` option,
the command input is still interpreted as usual. the command input is still interpreted as usual.
--not:: --not::
@ -103,14 +103,27 @@ OPTIONS
--all:: --all::
Show all refs found in `$GIT_DIR/refs`. Show all refs found in `$GIT_DIR/refs`.
--branches:: --branches[=pattern]::
Show branch refs found in `$GIT_DIR/refs/heads`. --tags[=pattern]::
--remotes[=pattern]::
Show all branches, tags, or remote-tracking branches,
respectively (i.e., refs found in `$GIT_DIR/refs/heads`,
`$GIT_DIR/refs/tags`, or `$GIT_DIR/refs/remotes`,
respectively).
+
If a `pattern` is given, only refs matching the given shell glob are
shown. If the pattern does not contain a globbing character (`?`,
`\*`, or `[`), it is turned into a prefix match by appending `/\*`.
--tags:: --glob=pattern::
Show tag refs found in `$GIT_DIR/refs/tags`. Show all refs matching the shell glob pattern `pattern`. If
the pattern does not start with `refs/`, this is automatically
prepended. If the pattern does not contain a globbing
character (`?`, `\*`, or `[`), it is turned into a prefix
match by appending `/\*`.
--remotes:: --show-toplevel::
Show tag refs found in `$GIT_DIR/refs/remotes`. Show the absolute path of the top-level directory.
--show-prefix:: --show-prefix::
When the command is invoked from a subdirectory, show the When the command is invoked from a subdirectory, show the
@ -145,12 +158,12 @@ OPTIONS
--since=datestring:: --since=datestring::
--after=datestring:: --after=datestring::
Parse the date string, and output the corresponding Parse the date string, and output the corresponding
--max-age= parameter for 'git-rev-list'. --max-age= parameter for 'git rev-list'.
--until=datestring:: --until=datestring::
--before=datestring:: --before=datestring::
Parse the date string, and output the corresponding Parse the date string, and output the corresponding
--min-age= parameter for 'git-rev-list'. --min-age= parameter for 'git rev-list'.
<args>...:: <args>...::
Flags and parameters to be parsed. Flags and parameters to be parsed.
@ -171,7 +184,7 @@ blobs contained in a commit.
name the same commit object if there are no other object in name the same commit object if there are no other object in
your repository whose object name starts with dae86e. your repository whose object name starts with dae86e.
* An output from 'git-describe'; i.e. a closest tag, optionally * An output from 'git describe'; i.e. a closest tag, optionally
followed by a dash and a number of commits, followed by a dash, a followed by a dash and a number of commits, followed by a dash, a
`g`, and an abbreviated object name. `g`, and an abbreviated object name.
@ -197,13 +210,13 @@ blobs contained in a commit.
+ +
HEAD names the commit your changes in the working tree is based on. HEAD names the commit your changes in the working tree is based on.
FETCH_HEAD records the branch you fetched from a remote repository FETCH_HEAD records the branch you fetched from a remote repository
with your last 'git-fetch' invocation. with your last 'git fetch' invocation.
ORIG_HEAD is created by commands that moves your HEAD in a drastic ORIG_HEAD is created by commands that moves your HEAD in a drastic
way, to record the position of the HEAD before their operation, so that way, to record the position of the HEAD before their operation, so that
you can change the tip of the branch back to the state before you ran you can change the tip of the branch back to the state before you ran
them easily. them easily.
MERGE_HEAD records the commit(s) you are merging into your branch MERGE_HEAD records the commit(s) you are merging into your branch
when you run 'git-merge'. when you run 'git merge'.
* A ref followed by the suffix '@' with a date specification * A ref followed by the suffix '@' with a date specification
enclosed in a brace enclosed in a brace
@ -231,6 +244,10 @@ when you run 'git-merge'.
* The special construct '@\{-<n>\}' means the <n>th branch checked out * The special construct '@\{-<n>\}' means the <n>th branch checked out
before the current one. before the current one.
* The suffix '@{upstream}' to a ref (short form 'ref@{u}') refers to
the branch the ref is set to build on top of. Missing ref defaults
to the current branch.
* A suffix '{caret}' to a revision parameter means the first parent of * A suffix '{caret}' to a revision parameter means the first parent of
that commit object. '{caret}<n>' means the <n>th parent (i.e. that commit object. '{caret}<n>' means the <n>th parent (i.e.
'rev{caret}' 'rev{caret}'
@ -308,7 +325,7 @@ G H I J
SPECIFYING RANGES SPECIFYING RANGES
----------------- -----------------
History traversing commands such as 'git-log' operate on a set History traversing commands such as 'git log' operate on a set
of commits, not just a single commit. To these commands, of commits, not just a single commit. To these commands,
specifying a single revision with the notation described in the specifying a single revision with the notation described in the
previous section means the set of commits reachable from that previous section means the set of commits reachable from that
@ -349,7 +366,7 @@ Here are a handful of examples:
PARSEOPT PARSEOPT
-------- --------
In `--parseopt` mode, 'git-rev-parse' helps massaging options to bring to shell In `--parseopt` mode, 'git rev-parse' helps massaging options to bring to shell
scripts the same facilities C builtins have. It works as an option normalizer scripts the same facilities C builtins have. It works as an option normalizer
(e.g. splits single switches aggregate values), a bit like `getopt(1)` does. (e.g. splits single switches aggregate values), a bit like `getopt(1)` does.
@ -361,7 +378,7 @@ usage on the standard error stream, and exits with code 129.
Input Format Input Format
~~~~~~~~~~~~ ~~~~~~~~~~~~
'git-rev-parse --parseopt' input format is fully text based. It has two parts, 'git rev-parse --parseopt' input format is fully text based. It has two parts,
separated by a line that contains only `--`. The lines before the separator separated by a line that contains only `--`. The lines before the separator
(should be more than one) are used for the usage. (should be more than one) are used for the usage.
The lines after the separator describe the options. The lines after the separator describe the options.
@ -420,13 +437,13 @@ eval `echo "$OPTS_SPEC" | git rev-parse --parseopt -- "$@" || echo exit $?`
SQ-QUOTE SQ-QUOTE
-------- --------
In `--sq-quote` mode, 'git-rev-parse' echoes on the standard output a In `--sq-quote` mode, 'git rev-parse' echoes on the standard output a
single line suitable for `sh(1)` `eval`. This line is made by single line suitable for `sh(1)` `eval`. This line is made by
normalizing the arguments following `--sq-quote`. Nothing other than normalizing the arguments following `--sq-quote`. Nothing other than
quoting the arguments is done. quoting the arguments is done.
If you want command input to still be interpreted as usual by If you want command input to still be interpreted as usual by
'git-rev-parse' before the output is shell quoted, see the `--sq` 'git rev-parse' before the output is shell quoted, see the `--sq`
option. option.
Example Example

View File

@ -20,8 +20,8 @@ effect of an earlier commit (often a faulty one). If you want to
throw away all uncommitted changes in your working directory, you throw away all uncommitted changes in your working directory, you
should see linkgit:git-reset[1], particularly the '--hard' option. If should see linkgit:git-reset[1], particularly the '--hard' option. If
you want to extract specific files as they were in another commit, you you want to extract specific files as they were in another commit, you
should see linkgit:git-checkout[1], specifically the 'git checkout should see linkgit:git-checkout[1], specifically the `git checkout
<commit> -- <filename>' syntax. Take care with these alternatives as <commit> -- <filename>` syntax. Take care with these alternatives as
both will discard uncommitted changes in your working directory. both will discard uncommitted changes in your working directory.
OPTIONS OPTIONS
@ -33,7 +33,7 @@ OPTIONS
-e:: -e::
--edit:: --edit::
With this option, 'git-revert' will let you edit the commit With this option, 'git revert' will let you edit the commit
message prior to committing the revert. This is the default if message prior to committing the revert. This is the default if
you run the command from a terminal. you run the command from a terminal.
@ -54,7 +54,7 @@ See the link:howto/revert-a-faulty-merge.txt[revert-a-faulty-merge How-To] for
more details. more details.
--no-edit:: --no-edit::
With this option, 'git-revert' will not start the commit With this option, 'git revert' will not start the commit
message editor. message editor.
-n:: -n::

View File

@ -84,7 +84,7 @@ See the CONFIGURATION section for 'sendemail.multiedit'.
--in-reply-to=<identifier>:: --in-reply-to=<identifier>::
Specify the contents of the first In-Reply-To header. Specify the contents of the first In-Reply-To header.
Subsequent emails will refer to the previous email Subsequent emails will refer to the previous email
instead of this if --chain-reply-to is set (the default) instead of this if --chain-reply-to is set.
Only necessary if --compose is also set. If --compose Only necessary if --compose is also set. If --compose
is not set, this will be prompted for. is not set, this will be prompted for.
@ -172,8 +172,8 @@ Automating
email sent. If disabled with "--no-chain-reply-to", all emails after email sent. If disabled with "--no-chain-reply-to", all emails after
the first will be sent as replies to the first email sent. When using the first will be sent as replies to the first email sent. When using
this, it is recommended that the first file given be an overview of the this, it is recommended that the first file given be an overview of the
entire patch series. Default is the value of the 'sendemail.chainreplyto' entire patch series. Disabled by default, but the 'sendemail.chainreplyto'
configuration value; if that is unspecified, default to --chain-reply-to. configuration variable can be used to enable it.
--identity=<identity>:: --identity=<identity>::
A configuration identity. When given, causes values in the A configuration identity. When given, causes values in the

View File

@ -12,7 +12,7 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
Usually you would want to use 'git-push', which is a Usually you would want to use 'git push', which is a
higher-level wrapper of this command, instead. See linkgit:git-push[1]. higher-level wrapper of this command, instead. See linkgit:git-push[1].
Invokes 'git-receive-pack' on a possibly remote repository, and Invokes 'git-receive-pack' on a possibly remote repository, and
@ -86,7 +86,7 @@ and the destination side (after the colon). The ref to be
pushed is determined by finding a match that matches the source pushed is determined by finding a match that matches the source
side, and where it is pushed is determined by using the side, and where it is pushed is determined by using the
destination side. The rules used to match a ref are the same destination side. The rules used to match a ref are the same
rules used by 'git-rev-parse' to resolve a symbolic ref rules used by 'git rev-parse' to resolve a symbolic ref
name. See linkgit:git-rev-parse[1]. name. See linkgit:git-rev-parse[1].
- It is an error if <src> does not match exactly one of the - It is an error if <src> does not match exactly one of the

View File

@ -16,7 +16,7 @@ This is not a command the end user would want to run. Ever.
This documentation is meant for people who are studying the This documentation is meant for people who are studying the
Porcelain-ish scripts and/or are writing new ones. 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.

View File

@ -3,17 +3,17 @@ git-shortlog(1)
NAME NAME
---- ----
git-shortlog - Summarize 'git-log' output git-shortlog - Summarize 'git log' output
SYNOPSIS SYNOPSIS
-------- --------
[verse] [verse]
git log --pretty=short | 'git shortlog' [-h] [-n] [-s] [-e] [-w] git log --pretty=short | 'git shortlog' [-h] [-n] [-s] [-e] [-w]
git shortlog [-n|--numbered] [-s|--summary] [-e|--email] [-w[<width>[,<indent1>[,<indent2>]]]] [<committish>...] 'git shortlog' [-n|--numbered] [-s|--summary] [-e|--email] [-w[<width>[,<indent1>[,<indent2>]]]] [<committish>...]
DESCRIPTION DESCRIPTION
----------- -----------
Summarizes 'git-log' output in a format suitable for inclusion Summarizes 'git log' output in a format suitable for inclusion
in release announcements. Each commit will be grouped by author and in release announcements. Each commit will be grouped by author and
the first line of the commit message will be shown. the first line of the commit message will be shown.

View File

@ -14,10 +14,10 @@ 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
'git-verify-pack -v'; this command only shows the packfile 'git verify-pack -v'; this command only shows the packfile
offset and SHA1 of each object. offset and SHA1 of each object.

View File

@ -72,7 +72,7 @@ OPTIONS
--exclude-existing[=<pattern>]:: --exclude-existing[=<pattern>]::
Make 'git-show-ref' act as a filter that reads refs from stdin of the Make 'git show-ref' act as a filter that reads refs from stdin of the
form "^(?:<anything>\s)?<refname>(?:\^\{\})?$" and performs the form "^(?:<anything>\s)?<refname>(?:\^\{\})?$" and performs the
following actions on each: following actions on each:
(1) strip "^{}" at the end of line if any; (1) strip "^{}" at the end of line if any;
@ -135,7 +135,7 @@ When using the '--verify' flag, the command requires an exact path:
will only match the exact branch called "master". will only match the exact branch called "master".
If nothing matches, 'git-show-ref' will return an error code of 1, If nothing matches, 'git show-ref' will return an error code of 1,
and in the case of verification, it will show an error message. and in the case of verification, it will show an error message.
For scripting, you can ask it to be quiet with the "--quiet" flag, which For scripting, you can ask it to be quiet with the "--quiet" flag, which

View File

@ -16,16 +16,16 @@ Shows one or more objects (blobs, trees, tags and commits).
For commits it shows the log message and textual diff. It also For commits it shows the log message and textual diff. It also
presents the merge commit in a special format as produced by presents the merge commit in a special format as produced by
'git-diff-tree --cc'. 'git diff-tree --cc'.
For tags, it shows the tag message and the referenced objects. For tags, it shows the tag message and the referenced objects.
For trees, it shows the names (equivalent to 'git-ls-tree' For trees, it shows the names (equivalent to 'git ls-tree'
with \--name-only). with \--name-only).
For plain blobs, it shows the plain contents. For plain blobs, it shows the plain contents.
The command takes options applicable to the 'git-diff-tree' command to The command takes options applicable to the 'git diff-tree' command to
control how the changes the commit introduces are shown. control how the changes the commit introduces are shown.
This manual page describes only the most frequently used options. This manual page describes only the most frequently used options.

View File

@ -20,7 +20,7 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
Use 'git stash' when you want to record the current state of the Use `git stash` when you want to record the current state of the
working directory and the index, but want to go back to a clean working directory and the index, but want to go back to a clean
working directory. The command saves your local modifications away working directory. The command saves your local modifications away
and reverts the working directory to match the `HEAD` commit. and reverts the working directory to match the `HEAD` commit.
@ -77,7 +77,7 @@ stash@{0}: WIP on submit: 6ebd0e2... Update git-stash documentation
stash@{1}: On master: 9cc0589... Add git-stash stash@{1}: On master: 9cc0589... Add git-stash
---------------------------------------------------------------- ----------------------------------------------------------------
+ +
The command takes options applicable to the 'git-log' The command takes options applicable to the 'git log'
command to control what is shown and how. See linkgit:git-log[1]. command to control what is shown and how. See linkgit:git-log[1].
show [<stash>]:: show [<stash>]::
@ -85,7 +85,7 @@ show [<stash>]::
Show the changes recorded in the stash as a diff between the Show the changes recorded in the stash as a diff between the
stashed state and its original parent. When no `<stash>` is given, stashed state and its original parent. When no `<stash>` is given,
shows the latest one. By default, the command shows the diffstat, but shows the latest one. By default, the command shows the diffstat, but
it will accept any format known to 'git-diff' (e.g., `git stash show it will accept any format known to 'git diff' (e.g., `git stash show
-p stash@\{1}` to view the second most recent stash in patch form). -p stash@\{1}` to view the second most recent stash in patch form).
pop [--index] [-q|--quiet] [<stash>]:: pop [--index] [-q|--quiet] [<stash>]::
@ -201,7 +201,7 @@ $ git reset --soft HEAD^
# ... continue hacking ... # ... continue hacking ...
---------------------------------------------------------------- ----------------------------------------------------------------
+ +
You can use 'git-stash' to simplify the above, like this: You can use 'git stash' to simplify the above, like this:
+ +
---------------------------------------------------------------- ----------------------------------------------------------------
# ... hack hack hack ... # ... hack hack hack ...

View File

@ -8,7 +8,7 @@ git-status - Show the working tree status
SYNOPSIS SYNOPSIS
-------- --------
'git status' <options>... 'git status' [<options>...] [--] [<pathspec>...]
DESCRIPTION DESCRIPTION
----------- -----------
@ -17,28 +17,93 @@ 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`.
The command takes the same set of options as 'git-commit'; it OPTIONS
shows what would be committed if the same options are given to -------
'git-commit'.
If there is no path that is different between the index file and -s::
the current HEAD commit (i.e., there is nothing to commit by running --short::
`git commit`), the command exits with non-zero status. Give the output in the short-format.
--porcelain::
Give the output in a stable, easy-to-parse format for scripts.
Currently this is identical to --short output, but is guaranteed
not to change in the future, making it safe for scripts.
-u[<mode>]::
--untracked-files[=<mode>]::
Show untracked files (Default: 'all').
+
The mode parameter is optional, and is used to specify
the handling of untracked files. The possible options are:
+
--
- 'no' - Show no untracked files
- 'normal' - Shows untracked files and directories
- 'all' - Also shows individual files in untracked directories.
--
+
See linkgit:git-config[1] for configuration variable
used to change the default for when the option is not
specified.
-z::
Terminate entries with NUL, instead of LF. This implies
the `--porcelain` output format if no other format is given.
OUTPUT OUTPUT
------ ------
The output from this command is designed to be used as a commit The output from this command is designed to be used as a commit
template comment, and all the output lines are prefixed with '#'. template comment, and all the output lines are prefixed with '#'.
The default, long format, is designed to be human readable,
verbose and descriptive. They are subject to change in 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.
In short-format, the status of each path is shown as
XY PATH1 -> PATH2
where `PATH1` is the path in the `HEAD`, and ` -> PATH2` part is
shown only when `PATH1` corresponds to a different path in the
index/worktree (i.e. renamed).
For unmerged entries, `X` shows the status of stage #2 (i.e. ours) and `Y`
shows the status of stage #3 (i.e. theirs).
For entries that do not have conflicts, `X` shows the status of the index,
and `Y` shows the status of the work tree. For untracked paths, `XY` are
`??`.
X Y Meaning
-------------------------------------------------
[MD] not updated
M [ MD] updated in index
A [ MD] added to index
D [ MD] deleted from index
R [ MD] renamed in index
C [ MD] copied in index
[MARC] index and work tree matches
[ MARC] M work tree changed since index
[ MARC] D deleted in work tree
-------------------------------------------------
D D unmerged, both deleted
A U unmerged, added by us
U D unmerged, deleted by them
U A unmerged, added by them
D U unmerged, deleted by us
A A unmerged, both added
U U unmerged, both modified
-------------------------------------------------
? ? untracked
-------------------------------------------------
CONFIGURATION CONFIGURATION
------------- -------------
@ -53,9 +118,9 @@ paths shown are relative to the repository root, not to the current
directory. directory.
If `status.submodulesummary` is set to a non zero number or true (identical If `status.submodulesummary` is set to a non zero number or true (identical
to -1 or an unlimited number), the submodule summary will be enabled and a to -1 or an unlimited number), the submodule summary will be enabled for
summary of commits for modified submodules will be shown (see --summary-limit the long format and a summary of commits for modified submodules will be
option of linkgit:git-submodule[1]). shown (see --summary-limit option of linkgit:git-submodule[1]).
SEE ALSO SEE ALSO
-------- --------
@ -63,8 +128,7 @@ linkgit:gitignore[5]
Author Author
------ ------
Written by Linus Torvalds <torvalds@osdl.org> and Written by Junio C Hamano <gitster@pobox.com>.
Junio C Hamano <gitster@pobox.com>.
Documentation Documentation
-------------- --------------

View File

@ -99,11 +99,11 @@ locate the submodule using the relative URL in .gitmodules.
status:: status::
Show the status of the submodules. This will print the SHA-1 of the Show the status of the submodules. This will print the SHA-1 of the
currently checked out commit for each submodule, along with the currently checked out commit for each submodule, along with the
submodule path and the output of 'git-describe' for the submodule path and the output of 'git describe' for the
SHA-1. Each SHA-1 will be prefixed with `-` if the submodule is not SHA-1. Each SHA-1 will be prefixed with `-` if the submodule is not
initialized and `+` if the currently checked out submodule commit initialized and `+` if the currently checked out submodule commit
does not match the SHA-1 found in the index of the containing does not match the SHA-1 found in the index of the containing
repository. This command is the default command for 'git-submodule'. repository. This command is the default command for 'git submodule'.
+ +
If '--recursive' is specified, this command will recurse into nested If '--recursive' is specified, this command will recurse into nested
submodules, and show their status as well. submodules, and show their status as well.
@ -114,8 +114,8 @@ init::
The key used in .git/config is `submodule.$name.url`. The key used in .git/config is `submodule.$name.url`.
This command does not alter existing information in .git/config. This command does not alter existing information in .git/config.
You can then customize the submodule clone URLs in .git/config You can then customize the submodule clone URLs in .git/config
for your local setup and proceed to 'git submodule update'; for your local setup and proceed to `git submodule update`;
you can also just use 'git submodule update --init' without you can also just use `git submodule update --init` without
the explicit 'init' step if you do not intend to customize the explicit 'init' step if you do not intend to customize
any submodule locations. any submodule locations.

View File

@ -62,6 +62,8 @@ COMMANDS
Set the 'useSvnsyncProps' option in the [svn-remote] config. Set the 'useSvnsyncProps' option in the [svn-remote] config.
--rewrite-root=<URL>;; --rewrite-root=<URL>;;
Set the 'rewriteRoot' option in the [svn-remote] config. Set the 'rewriteRoot' option in the [svn-remote] config.
--rewrite-uuid=<UUID>;;
Set the 'rewriteUUID' option in the [svn-remote] config.
--username=<USER>;; --username=<USER>;;
For transports that SVN handles authentication for (http, For transports that SVN handles authentication for (http,
https, and plain svn), specify the username. For other https, and plain svn), specify the username. For other
@ -239,6 +241,19 @@ discouraged.
where <name> is the name of the SVN repository as specified by the -R option to where <name> is the name of the SVN repository as specified by the -R option to
'init' (or "svn" by default). 'init' (or "svn" by default).
--username;;
Specify the SVN username to perform the commit as. This option overrides
configuration property 'username'.
--commit-url;;
Use the specified URL to connect to the destination Subversion
repository. This is useful in cases where the source SVN
repository is read-only. This option overrides configuration
property 'commiturl'.
+
git config --get-all svn-remote.<name>.commiturl
+
'tag':: 'tag'::
Create a tag in the SVN repository. This is a shorthand for Create a tag in the SVN repository. This is a shorthand for
'branch -t'. 'branch -t'.
@ -616,6 +631,12 @@ svn-remote.<name>.rewriteRoot::
the repository with a public http:// or svn:// URL in the the repository with a public http:// or svn:// URL in the
metadata so users of it will see the public URL. metadata so users of it will see the public URL.
svn-remote.<name>.rewriteUUID::
Similar to the useSvmProps option; this is for users who need
to remap the UUID manually. This may be useful in situations
where the original UUID is not available via either useSvmProps
or useSvnsyncProps.
svn.brokenSymlinkWorkaround:: svn.brokenSymlinkWorkaround::
This disables potentially expensive checks to workaround This disables potentially expensive checks to workaround
broken symlinks checked into SVN by broken clients. Set this broken symlinks checked into SVN by broken clients. Set this
@ -625,13 +646,14 @@ svn.brokenSymlinkWorkaround::
revision fetched. If unset, 'git svn' assumes this option to revision fetched. If unset, 'git svn' assumes this option to
be "true". be "true".
Since the noMetadata, rewriteRoot, useSvnsyncProps and useSvmProps Since the noMetadata, rewriteRoot, rewriteUUID, useSvnsyncProps and useSvmProps
options all affect the metadata generated and used by 'git svn'; they options all affect the metadata generated and used by 'git svn'; they
*must* be set in the configuration file before any history is imported *must* be set in the configuration file before any history is imported
and these settings should never be changed once they are set. and these settings should never be changed once they are set.
Additionally, only one of these four options can be used per-svn-remote Additionally, only one of these options can be used per svn-remote
section because they affect the 'git-svn-id:' metadata line. section because they affect the 'git-svn-id:' metadata line, except
for rewriteRoot and rewriteUUID which can be used together.
BASIC EXAMPLES BASIC EXAMPLES
@ -816,6 +838,22 @@ independent path component (surrounded by '/' or EOL). This
type of configuration is not automatically created by 'init' and type of configuration is not automatically created by 'init' and
should be manually entered with a text-editor or using 'git config'. should be manually entered with a text-editor or using 'git config'.
It is also possible to fetch a subset of branches or tags by using a
comma-separated list of names within braces. For example:
------------------------------------------------------------------------
[svn-remote "huge-project"]
url = http://server.org/svn
fetch = trunk/src:refs/remotes/trunk
branches = branches/{red,green}/src:refs/remotes/branches/*
tags = tags/{1.0,2.0}/src:refs/remotes/tags/*
------------------------------------------------------------------------
Note that git-svn keeps track of the highest revision in which a branch
or tag has appeared. If the subset of branches or tags is changed after
fetching, then .git/svn/.metadata must be manually edited to remove (or
reset) branches-maxRev and/or tags-maxRev as appropriate.
SEE ALSO SEE ALSO
-------- --------
linkgit:git-rebase[1] linkgit:git-rebase[1]

View File

@ -49,7 +49,7 @@ cumbersome. On some platforms, `ln -sf` does not even work as
advertised (horrors). Therefore symbolic links are now deprecated advertised (horrors). Therefore symbolic links are now deprecated
and symbolic refs are used by default. and symbolic refs are used by default.
'git-symbolic-ref' will exit with status 0 if the contents of the 'git symbolic-ref' will exit with status 0 if the contents of the
symbolic ref were printed correctly, with status 1 if the requested symbolic ref were printed correctly, with status 1 if the requested
name is not a symbolic ref, or 128 if another error occurs. name is not a symbolic ref, or 128 if another error occurs.

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