Merge remote branch 'ko/master' into jc/read-tree-cache-tree-fix

* ko/master: (2325 commits)
  Git 1.7.2-rc2
  backmerge a few more fixes to 1.7.1.X series
  fix git branch -m in presence of cross devices
  t/t0006: specify timezone as EST5 not EST to comply with POSIX
  add missing && to submodule-merge testcase
  t/README: document more test helpers
  test-date: fix sscanf type conversion
  xdiff: optimise for no whitespace difference when ignoring whitespace.
  gitweb: Move evaluate_gitweb_config out of run_request
  parse_date: fix signedness in timezone calculation
  t0006: test timezone parsing
  rerere.txt: Document forget subcommand
  t/README: proposed rewording...
  t/README: Document the do's and don'ts of tests
  t/README: Add a section about skipping tests
  t/README: Document test_expect_code
  t/README: Document test_external*
  t/README: Document the prereq functions, and 3-arg test_*
  t/README: Typo: paralell -> parallel
  t/README: The trash is in 't/trash directory.$name'
  ...

Conflicts:
	builtin-read-tree.c
This commit is contained in:
Junio C Hamano 2010-07-08 18:55:50 -07:00
commit 037c43c68e
997 changed files with 83071 additions and 17219 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

373
.gitignore vendored
View file

@ -1,179 +1,206 @@
GIT-BUILD-OPTIONS /GIT-BUILD-OPTIONS
GIT-CFLAGS /GIT-CFLAGS
GIT-GUI-VARS /GIT-GUI-VARS
GIT-VERSION-FILE /GIT-VERSION-FILE
git /bin-wrappers/
git-add /git
git-add--interactive /git-add
git-am /git-add--interactive
git-annotate /git-am
git-apply /git-annotate
git-archimport /git-apply
git-archive /git-archimport
git-bisect /git-archive
git-bisect--helper /git-bisect
git-blame /git-bisect--helper
git-branch /git-blame
git-bundle /git-branch
git-cat-file /git-bundle
git-check-attr /git-cat-file
git-check-ref-format /git-check-attr
git-checkout /git-check-ref-format
git-checkout-index /git-checkout
git-cherry /git-checkout-index
git-cherry-pick /git-cherry
git-clean /git-cherry-pick
git-clone /git-clean
git-commit /git-clone
git-commit-tree /git-commit
git-config /git-commit-tree
git-count-objects /git-config
git-cvsexportcommit /git-count-objects
git-cvsimport /git-cvsexportcommit
git-cvsserver /git-cvsimport
git-daemon /git-cvsserver
git-diff /git-daemon
git-diff-files /git-diff
git-diff-index /git-diff-files
git-diff-tree /git-diff-index
git-difftool /git-diff-tree
git-difftool--helper /git-difftool
git-describe /git-difftool--helper
git-fast-export /git-describe
git-fast-import /git-fast-export
git-fetch /git-fast-import
git-fetch--tool /git-fetch
git-fetch-pack /git-fetch--tool
git-filter-branch /git-fetch-pack
git-fmt-merge-msg /git-filter-branch
git-for-each-ref /git-fmt-merge-msg
git-format-patch /git-for-each-ref
git-fsck /git-format-patch
git-fsck-objects /git-fsck
git-gc /git-fsck-objects
git-get-tar-commit-id /git-gc
git-grep /git-get-tar-commit-id
git-hash-object /git-grep
git-help /git-hash-object
git-http-fetch /git-help
git-http-push /git-http-backend
git-imap-send /git-http-fetch
git-index-pack /git-http-push
git-init /git-imap-send
git-init-db /git-index-pack
git-instaweb /git-init
git-log /git-init-db
git-lost-found /git-instaweb
git-ls-files /git-log
git-ls-remote /git-lost-found
git-ls-tree /git-ls-files
git-mailinfo /git-ls-remote
git-mailsplit /git-ls-tree
git-merge /git-mailinfo
git-merge-base /git-mailsplit
git-merge-index /git-merge
git-merge-file /git-merge-base
git-merge-tree /git-merge-index
git-merge-octopus /git-merge-file
git-merge-one-file /git-merge-tree
git-merge-ours /git-merge-octopus
git-merge-recursive /git-merge-one-file
git-merge-resolve /git-merge-ours
git-merge-subtree /git-merge-recursive
git-mergetool /git-merge-resolve
git-mergetool--lib /git-merge-subtree
git-mktag /git-mergetool
git-mktree /git-mergetool--lib
git-name-rev /git-mktag
git-mv /git-mktree
git-pack-redundant /git-name-rev
git-pack-objects /git-mv
git-pack-refs /git-notes
git-parse-remote /git-pack-redundant
git-patch-id /git-pack-objects
git-peek-remote /git-pack-refs
git-prune /git-parse-remote
git-prune-packed /git-patch-id
git-pull /git-peek-remote
git-push /git-prune
git-quiltimport /git-prune-packed
git-read-tree /git-pull
git-rebase /git-push
git-rebase--interactive /git-quiltimport
git-receive-pack /git-read-tree
git-reflog /git-rebase
git-relink /git-rebase--interactive
git-remote /git-receive-pack
git-repack /git-reflog
git-repo-config /git-relink
git-request-pull /git-remote
git-rerere /git-remote-curl
git-reset /git-remote-http
git-rev-list /git-remote-https
git-rev-parse /git-remote-ftp
git-revert /git-remote-ftps
git-rm /git-remote-testgit
git-send-email /git-repack
git-send-pack /git-replace
git-sh-setup /git-repo-config
git-shell /git-request-pull
git-shortlog /git-rerere
git-show /git-reset
git-show-branch /git-rev-list
git-show-index /git-rev-parse
git-show-ref /git-revert
git-stage /git-rm
git-stash /git-send-email
git-status /git-send-pack
git-stripspace /git-sh-setup
git-submodule /git-shell
git-svn /git-shortlog
git-symbolic-ref /git-show
git-tag /git-show-branch
git-tar-tree /git-show-index
git-unpack-file /git-show-ref
git-unpack-objects /git-stage
git-update-index /git-stash
git-update-ref /git-status
git-update-server-info /git-stripspace
git-upload-archive /git-submodule
git-upload-pack /git-svn
git-var /git-symbolic-ref
git-verify-pack /git-tag
git-verify-tag /git-tar-tree
git-web--browse /git-unpack-file
git-whatchanged /git-unpack-objects
git-write-tree /git-update-index
git-core-*/?* /git-update-ref
gitk-wish /git-update-server-info
gitweb/gitweb.cgi /git-upload-archive
test-chmtime /git-upload-pack
test-ctype /git-var
test-date /git-verify-pack
test-delta /git-verify-tag
test-dump-cache-tree /git-web--browse
test-genrandom /git-whatchanged
test-match-trees /git-write-tree
test-parse-options /git-core-*/?*
test-path-utils /gitk-git/gitk-wish
test-sha1 /gitweb/GITWEB-BUILD-OPTIONS
test-sigchain /gitweb/gitweb.cgi
common-cmds.h /gitweb/gitweb.min.*
/test-chmtime
/test-ctype
/test-date
/test-delta
/test-dump-cache-tree
/test-genrandom
/test-index-version
/test-match-trees
/test-parse-options
/test-path-utils
/test-run-command
/test-sha1
/test-sigchain
/common-cmds.h
*.tar.gz *.tar.gz
*.dsc *.dsc
*.deb *.deb
git.spec /git.spec
*.exe *.exe
*.[aos] *.[aos]
*.py[co] *.py[co]
config.mak .depend/
autom4te.cache *+
config.cache /config.mak
config.log /autom4te.cache
config.status /config.cache
config.mak.autogen /config.log
config.mak.append /config.status
configure /config.mak.autogen
tags /config.mak.append
TAGS /configure
cscope* /tags
/TAGS
/cscope*
*.obj
*.lib
*.sln
*.suo
*.ncb
*.vcproj
*.user
*.idb
*.pdb
/Debug/
/Release/

View file

@ -5,6 +5,7 @@
# same person appearing not to be so. # same person appearing not to be so.
# #
Alex Bennée <kernel-hacker@bennee.com>
Alexander Gavrilov <angavrilov@gmail.com> Alexander Gavrilov <angavrilov@gmail.com>
Aneesh Kumar K.V <aneesh.kumar@gmail.com> Aneesh Kumar K.V <aneesh.kumar@gmail.com>
Brian M. Carlson <sandals@crustytoothpaste.ath.cx> Brian M. Carlson <sandals@crustytoothpaste.ath.cx>
@ -15,6 +16,7 @@ Daniel Barkalow <barkalow@iabervon.org>
David D. Kilzer <ddkilzer@kilzer.net> David D. Kilzer <ddkilzer@kilzer.net>
David Kågedal <davidk@lysator.liu.se> David Kågedal <davidk@lysator.liu.se>
David S. Miller <davem@davemloft.net> David S. Miller <davem@davemloft.net>
Deskin Miller <deskinm@umich.edu>
Dirk Süsserott <newsletter@dirk.my1.cc> Dirk Süsserott <newsletter@dirk.my1.cc>
Fredrik Kuivinen <freku045@student.liu.se> Fredrik Kuivinen <freku045@student.liu.se>
H. Peter Anvin <hpa@bonde.sc.orionmulti.com> H. Peter Anvin <hpa@bonde.sc.orionmulti.com>
@ -36,11 +38,13 @@ Li Hong <leehong@pku.edu.cn>
Lukas Sandström <lukass@etek.chalmers.se> Lukas Sandström <lukass@etek.chalmers.se>
Martin Langhoff <martin@catalyst.net.nz> Martin Langhoff <martin@catalyst.net.nz>
Michael Coleman <tutufan@gmail.com> Michael Coleman <tutufan@gmail.com>
Michael J Gruber <git@drmicha.warpmail.net> <michaeljgruber+gmane@fastmail.fm>
Michael W. Olson <mwolson@gnu.org> Michael W. Olson <mwolson@gnu.org>
Michele Ballabio <barra_cuda@katamail.com> Michele Ballabio <barra_cuda@katamail.com>
Nanako Shiraishi <nanako3@bluebottle.com> Nanako Shiraishi <nanako3@bluebottle.com>
Nanako Shiraishi <nanako3@lavabit.com> Nanako Shiraishi <nanako3@lavabit.com>
Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
<nico@fluxnic.net> <nico@cam.org>
Philippe Bruhat <book@cpan.org> Philippe Bruhat <book@cpan.org>
Ramsay Allan Jones <ramsay@ramsay1.demon.co.uk> Ramsay Allan Jones <ramsay@ramsay1.demon.co.uk>
René Scharfe <rene.scharfe@lsrfire.ath.cx> René Scharfe <rene.scharfe@lsrfire.ath.cx>
@ -58,6 +62,7 @@ Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
Uwe Kleine-König <uzeisberger@io.fsforth.de> Uwe Kleine-König <uzeisberger@io.fsforth.de>
Uwe Kleine-König <zeisberg@informatik.uni-freiburg.de> Uwe Kleine-König <zeisberg@informatik.uni-freiburg.de>
Ville Skyttä <scop@xemacs.org> Ville Skyttä <scop@xemacs.org>
Vitaly "_Vi" Shukela <public_vi@tut.by>
William Pursell <bill.pursell@gmail.com> William Pursell <bill.pursell@gmail.com>
YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
anonymous <linux@horizon.com> anonymous <linux@horizon.com>

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

@ -8,3 +8,4 @@ gitman.info
howto-index.txt howto-index.txt
doc.dep doc.dep
cmds-*.txt cmds-*.txt
manpage-base-url.xsl

View file

@ -17,6 +17,7 @@ DOC_HTML=$(MAN_HTML)
ARTICLES = howto-index ARTICLES = howto-index
ARTICLES += everyday ARTICLES += everyday
ARTICLES += git-tools ARTICLES += git-tools
ARTICLES += git-bisect-lk2009
# with their own formatting rules. # with their own formatting rules.
SP_ARTICLES = howto/revert-branch-rebase howto/using-merge-subtree user-manual SP_ARTICLES = howto/revert-branch-rebase howto/using-merge-subtree user-manual
API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt))) API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt)))
@ -103,6 +104,25 @@ ifdef DOCBOOK_SUPPRESS_SP
XMLTO_EXTRA += -m manpage-suppress-sp.xsl XMLTO_EXTRA += -m manpage-suppress-sp.xsl
endif endif
# Newer DocBook stylesheet emits warning cruft in the output when
# this is not set, and if set it shows an absolute link. Older
# stylesheets simply ignore this parameter.
#
# Distros may want to use MAN_BASE_URL=file:///path/to/git/docs/
# or similar.
ifndef MAN_BASE_URL
MAN_BASE_URL = file://$(htmldir)/
endif
XMLTO_EXTRA += -m manpage-base-url.xsl
# If your target system uses GNU groff, it may try to render
# apostrophes as a "pretty" apostrophe using unicode. This breaks
# cut&paste, so you should set GNU_ROFF to force them to be ASCII
# apostrophes. Unfortunately does not work with non-GNU roff.
ifdef GNU_ROFF
XMLTO_EXTRA += -m manpage-quote-apos.xsl
endif
SHELL_PATH ?= $(SHELL) SHELL_PATH ?= $(SHELL)
# Shell quote; # Shell quote;
SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
@ -184,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
@ -222,6 +242,7 @@ clean:
$(RM) howto-index.txt howto/*.html doc.dep $(RM) howto-index.txt howto/*.html doc.dep
$(RM) technical/api-*.html technical/api-index.txt $(RM) technical/api-*.html technical/api-index.txt
$(RM) $(cmds_txt) *.made $(RM) $(cmds_txt) *.made
$(RM) manpage-base-url.xsl
$(MAN_HTML): %.html : %.txt $(MAN_HTML): %.html : %.txt
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \ $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
@ -229,7 +250,10 @@ $(MAN_HTML): %.html : %.txt
$(ASCIIDOC_EXTRA) -agit_version=$(GIT_VERSION) -o $@+ $< && \ $(ASCIIDOC_EXTRA) -agit_version=$(GIT_VERSION) -o $@+ $< && \
mv $@+ $@ mv $@+ $@
%.1 %.5 %.7 : %.xml manpage-base-url.xsl: manpage-base-url.xsl.in
sed "s|@@MAN_BASE_URL@@|$(MAN_BASE_URL)|" $< > $@
%.1 %.5 %.7 : %.xml manpage-base-url.xsl
$(QUIET_XMLTO)$(RM) $@ && \ $(QUIET_XMLTO)$(RM) $@ && \
xmlto -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $< xmlto -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
@ -240,7 +264,9 @@ $(MAN_HTML): %.html : %.txt
mv $@+ $@ mv $@+ $@
user-manual.xml: user-manual.txt user-manual.conf user-manual.xml: user-manual.txt user-manual.conf
$(QUIET_ASCIIDOC)$(ASCIIDOC) $(ASCIIDOC_EXTRA) -b docbook -d book $< $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
$(ASCIIDOC) $(ASCIIDOC_EXTRA) -b docbook -d book -o $@+ $< && \
mv $@+ $@
technical/api-index.txt: technical/api-index-skel.txt \ technical/api-index.txt: technical/api-index-skel.txt \
technical/api-index.sh $(patsubst %,%.txt,$(API_DOCS)) technical/api-index.sh $(patsubst %,%.txt,$(API_DOCS))
@ -254,7 +280,9 @@ XSLT = docbook.xsl
XSLTOPTS = --xinclude --stringparam html.stylesheet docbook-xsl.css XSLTOPTS = --xinclude --stringparam html.stylesheet docbook-xsl.css
user-manual.html: user-manual.xml user-manual.html: user-manual.xml
$(QUIET_XSLTPROC)xsltproc $(XSLTOPTS) -o $@ $(XSLT) $< $(QUIET_XSLTPROC)$(RM) $@+ $@ && \
xsltproc $(XSLTOPTS) -o $@+ $(XSLT) $< && \
mv $@+ $@
git.info: user-manual.texi git.info: user-manual.texi
$(QUIET_MAKEINFO)$(MAKEINFO) --no-split -o $@ user-manual.texi $(QUIET_MAKEINFO)$(MAKEINFO) --no-split -o $@ user-manual.texi
@ -313,4 +341,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,20 @@
GIT v1.6.5.1 Release Notes
==========================
Fixes since v1.6.5
------------------
* An corrupt pack could make codepath to read objects into an
infinite loop.
* Download throughput display was always shown in KiB/s but on fast links
it is more appropriate to show it in MiB/s.
* "git grep -f filename" used uninitialized variable and segfaulted.
* "git clone -b branch" gave a wrong commit object name to post-checkout
hook.
* "git pull" over http did not work on msys.
Other minor documentation updates are included.

View file

@ -0,0 +1,19 @@
GIT v1.6.5.2 Release Notes
==========================
Fixes since v1.6.5.1
--------------------
* Installation of templates triggered a bug in busybox when using tar
implementation from it.
* "git add -i" incorrectly ignored paths that are already in the index
if they matched .gitignore patterns.
* "git describe --always" should have produced some output even there
were no tags in the repository, but it didn't.
* "git ls-files" when showing tracked files incorrectly paid attention
to the exclude patterns.
Other minor documentation updates are included.

View file

@ -0,0 +1,63 @@
Git v1.6.5.3 Release Notes
==========================
Fixes since v1.6.5.2
--------------------
* info/grafts file didn't ignore trailing CR at the end of lines.
* Packages generated on newer FC were unreadable by older versions of
RPM as the new default is to use stronger hash.
* output from "git blame" was unreadable when the file ended in an
incomplete line.
* "git add -i/-p" didn't handle deletion of empty files correctly.
* "git clone" takes up to two parameters, but did not complain when
given more arguments than necessary and silently ignored them.
* "git cvsimport" did not read files given as command line arguments
correctly when it is run from a subdirectory.
* "git diff --color-words -U0" didn't work correctly.
* The handling of blank lines at the end of file by "git diff/apply
--whitespace" was inconsistent with the other kinds of errors.
They are now colored, warned against, and fixed the same way as others.
* There was no way to allow blank lines at the end of file without
allowing extra blanks at the end of lines. You can use blank-at-eof
and blank-at-eol whitespace error class to specify them separately.
The old trailing-space error class is now a short-hand to set both.
* "-p" option to "git format-patch" was supposed to suppress diffstat
generation, but it was broken since 1.6.1.
* "git imap-send" did not compile cleanly with newer OpenSSL.
* "git help -a" outside of a git repository was broken.
* "git ls-files -i" was supposed to be inverse of "git ls-files" without -i
with respect to exclude patterns, but it was broken since 1.6.5.2.
* "git ls-remote" outside of a git repository over http was broken.
* "git rebase -i" gave bogus error message when the command word was
misspelled.
* "git receive-pack" that is run in response to "git push" did not run
garbage collection nor update-server-info, but in larger hosting sites,
these almost always need to be run. To help site administrators, the
command now runs "gc --auto" and "u-s-i" by setting receive.autogc
and receive.updateserverinfo configuration variables, respectively.
* Release notes spelled the package name with incorrect capitalization.
* "gitweb" did not escape non-ascii characters correctly in the URL.
* "gitweb" showed "patch" link even for merge commits.
* "gitweb" showed incorrect links for blob line numbers in pathinfo mode.
Other minor documentation updates are included.

View file

@ -0,0 +1,32 @@
Git v1.6.5.4 Release Notes
==========================
Fixes since v1.6.5.3
--------------------
* "git help" (without argument) used to check if you are in a directory
under git control. There was no breakage in behaviour per-se, but this
was unnecessary.
* "git prune-packed" gave progress output even when its standard error is
not connected to a terminal; this caused cron jobs that run it to
produce crufts.
* "git pack-objects --all-progress" is an option to ask progress output
from write-object phase _if_ progress output were to be produced, and
shouldn't have forced the progress output.
* "git apply -p<n> --directory=<elsewhere>" did not work well for a
non-default value of n.
* "git merge foo HEAD" was misparsed as an old-style invocation of the
command and produced a confusing error message. As it does not specify
any other branch to merge, it shouldn't be mistaken as such. We will
remove the old style "git merge <message> HEAD <commit>..." syntax in
future versions, but not in this release,
* "git merge -m <message> <branch>..." added the standard merge message
on its own after user-supplied message, which should have overrided the
standard one.
Other minor documentation updates are included.

View file

@ -0,0 +1,49 @@
Git v1.6.5.5 Release Notes
==========================
Fixes since v1.6.5.4
--------------------
* Manual pages can be formatted with older xmlto again.
* GREP_OPTIONS exported from user's environment could have broken
our scripted commands.
* In configuration files, a few variables that name paths can begin with
~/ and ~username/ and they are expanded as expected. This is not a
bugfix but 1.6.6 will have this and without backporting users cannot
easily use the same ~/.gitconfig across versions.
* "git diff -B -M" did the same computation to hash lines of contents
twice, and held onto memory after it has used the data in it
unnecessarily before it freed.
* "git diff -B" and "git diff --dirstat" was not counting newly added
contents correctly.
* "git format-patch revisions... -- path" issued an incorrect error
message that suggested to use "--" on the command line when path
does not exist in the current work tree (it is a separate matter if
it makes sense to limit format-patch with pathspecs like that
without using the --full-diff option).
* "git grep -F -i StRiNg" did not work as expected.
* Enumeration of available merge strategies iterated over the list of
commands in a wrong way, sometimes producing an incorrect result.
* "git shortlog" did not honor the "encoding" header embedded in the
commit object like "git log" did.
* Reading progress messages that come from the remote side while running
"git pull" is given precedence over reading the actual pack data to
prevent garbled progress message on the user's terminal.
* "git rebase" got confused when the log message began with certain
strings that looked like Subject:, Date: or From: header.
* "git reset" accidentally run in .git/ directory checked out the
work tree contents in there.
Other minor documentation updates are included.

View file

@ -0,0 +1,23 @@
Git v1.6.5.6 Release Notes
==========================
Fixes since v1.6.5.5
--------------------
* "git add -p" had a regression since v1.6.5.3 that broke deletion of
non-empty files.
* "git archive -o o.zip -- Makefile" produced an archive in o.zip
but in POSIX tar format.
* Error message given to "git pull --rebase" when the user didn't give
enough clue as to what branch to integrate with still talked about
"merging with" the branch.
* Error messages given by "git merge" when the merge resulted in a
fast-forward still were in plumbing lingo, even though in v1.6.5
we reworded messages in other cases.
* The post-upload-hook run by upload-pack in response to "git fetch" has
been removed, due to security concerns (the hook first appeared in
1.6.5).

View file

@ -0,0 +1,19 @@
Git v1.6.5.7 Release Notes
==========================
Fixes since v1.6.5.6
--------------------
* If a user specifies a color for a <slot> (i.e. a class of things to show
in a particular color) that is known only by newer versions of git
(e.g. "color.diff.func" was recently added for upcoming 1.6.6 release),
an older version of git should just ignore them. Instead we diagnosed
it as an error.
* With help.autocorrect set to non-zero value, the logic to guess typoes
in the subcommand name misfired and ran a random nonsense command.
* If a command is run with an absolute path as a pathspec inside a bare
repository, e.g. "rev-list HEAD -- /home", the code tried to run
strlen() on NULL, which is the result of get_git_work_tree(), and
segfaulted.

View file

@ -0,0 +1,28 @@
Git v1.6.5.8 Release Notes
==========================
Fixes since v1.6.5.7
--------------------
* "git count-objects" did not handle packfiles that are bigger than 4G on
platforms with 32-bit off_t.
* "git rebase -i" did not abort cleanly if it failed to launch the editor.
* "git blame" did not work well when commit lacked the author name.
* "git fast-import" choked when handling a tag that points at an object
that is not a commit.
* "git reset --hard" did not work correctly when GIT_WORK_TREE environment
variable is used to point at the root of the true work tree.
* "git grep" fed a buffer that is not NUL-terminated to underlying
regexec().
* "git checkout -m other" while on a branch that does not have any commit
segfaulted, instead of failing.
* "git branch -a other" should have diagnosed the command as an error.
Other minor documentation updates are also included.

View file

@ -0,0 +1,169 @@
GIT v1.6.5 Release Notes
========================
In git 1.7.0, which was planned to be the release after 1.6.5, "git
push" into a branch that is currently checked out will be refused by
default.
You can choose what should happen upon such a push by setting the
configuration variable receive.denyCurrentBranch in the receiving
repository.
Also, "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.
You can choose what should happen upon such a push by setting the
configuration variable receive.denyDeleteCurrent in the receiving
repository.
To ease the transition plan, the receiving repository of such a
push running this release will issue a big warning when the
configuration variable is missing. Please refer to:
http://git.or.cz/gitwiki/GitFaq#non-bare
http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
for more details on the reason why this change is needed and the
transition plan.
Updates since v1.6.4
--------------------
(subsystems)
* various updates to gitk, git-svn and gitweb.
(portability)
* more improvements on mingw port.
* mingw will also give FRSX as the default value for the LESS
environment variable when the user does not have one.
* initial support to compile git on Windows with MSVC.
(performance)
* On major platforms, the system can be compiled to use with Linus's
block-sha1 implementation of the SHA-1 hash algorithm, which
outperforms the default fallback implementation we borrowed from
Mozilla.
* Unnecessary inefficiency in deepening of a shallow repository has
been removed.
* "git clone" does not grab objects that it does not need (i.e.
referenced only from refs outside refs/heads and refs/tags
hierarchy) anymore.
* The "git" main binary used to link with libcurl, which then dragged
in a large number of external libraries. When using basic plumbing
commands in scripts, this unnecessarily slowed things down. We now
implement http/https/ftp transfer as a separate executable as we
used to.
* "git clone" run locally hardlinks or copies the files in .git/ to
newly created repository. It used to give new mtime to copied files,
but this delayed garbage collection to trigger unnecessarily in the
cloned repository. We now preserve mtime for these files to avoid
this issue.
(usability, bells and whistles)
* Human writable date format to various options, e.g. --since=yesterday,
master@{2000.09.17}, are taught to infer some omitted input properly.
* A few programs gave verbose "advice" messages to help uninitiated
people when issuing error messages. An infrastructure to allow
users to squelch them has been introduced, and a few such messages
can be silenced now.
* refs/replace/ hierarchy is designed to be usable as a replacement
of the "grafts" mechanism, with the added advantage that it can be
transferred across repositories.
* "git am" learned to optionally ignore whitespace differences.
* "git am" handles input e-mail files that has CRLF line endings sensibly.
* "git am" learned "--scissors" option to allow you to discard early part
of an incoming e-mail.
* "git archive -o output.zip" works without being told what format to
use with an explicit "--format=zip".option.
* "git checkout", "git reset" and "git stash" learned to pick and
choose to use selected changes you made, similar to "git add -p".
* "git clone" learned a "-b" option to pick a HEAD to check out
different from the remote's default branch.
* "git clone" learned --recursive option.
* "git clone" from a local repository on a different filesystem used to
copy individual object files without preserving the old timestamp, giving
them extra lifetime in the new repository until they gc'ed.
* "git commit --dry-run $args" is a new recommended way to ask "what would
happen if I try to commit with these arguments."
* "git commit --dry-run" and "git status" shows conflicted paths in a
separate section to make them easier to spot during a merge.
* "git cvsimport" now supports password-protected pserver access even
when the password is not taken from ~/.cvspass file.
* "git fast-export" learned --no-data option that can be useful when
reordering commits and trees without touching the contents of
blobs.
* "git fast-import" has a pair of new front-end in contrib/ area.
* "git init" learned to mkdir/chdir into a directory when given an
extra argument (i.e. "git init this").
* "git instaweb" optionally can use mongoose as the web server.
* "git log --decorate" can optionally be told with --decorate=full to
give the reference name in full.
* "git merge" issued an unnecessarily scary message when it detected
that the merge may have to touch the path that the user has local
uncommitted changes to. The message has been reworded to make it
clear that the command aborted, without doing any harm.
* "git push" can be told to be --quiet.
* "git push" pays attention to url.$base.pushInsteadOf and uses a URL
that is derived from the URL used for fetching.
* informational output from "git reset" that lists the locally modified
paths is made consistent with that of "git checkout $another_branch".
* "git submodule" learned to give submodule name to scripts run with
"foreach" subcommand.
* various subcommands to "git submodule" learned --recursive option.
* "git submodule summary" learned --files option to compare the work
tree vs the commit bound at submodule path, instead of comparing
the index.
* "git upload-pack", which is the server side support for "git clone" and
"git fetch", can call a new post-upload-pack hook for statistics purposes.
(developers)
* With GIT_TEST_OPTS="--root=/p/a/t/h", tests can be run outside the
source directory; using tmpfs may give faster turnaround.
* With NO_PERL_MAKEMAKER set, DESTDIR= is now honoured, so you can
build for one location, and install into another location to tar it
up.
Fixes since v1.6.4
------------------
All of the fixes in v1.6.4.X maintenance series are included in this
release, unless otherwise noted.

View file

@ -0,0 +1,37 @@
Git v1.6.6.1 Release Notes
==========================
Fixes since v1.6.6
------------------
* "git blame" did not work well when commit lacked the author name.
* "git branch -a name" wasn't diagnosed as an error.
* "git count-objects" did not handle packfiles that are bigger than 4G on
platforms with 32-bit off_t.
* "git checkout -m other" while on a branch that does not have any commit
segfaulted, instead of failing.
* "git fast-import" choked when fed a tag that do not point at a
commit.
* "git grep" finding from work tree files could have fed garbage to
the underlying regexec(3).
* "git grep -L" didn't show empty files (they should never match, and
they should always appear in -L output as unmatching).
* "git rebase -i" did not abort cleanly if it failed to launch the editor.
* "git reset --hard" did not work correctly when GIT_WORK_TREE environment
variable is used to point at the root of the true work tree.
* http-backend was not listed in the command list in the documentation.
* Building on FreeBSD (both 7 and 8) needs OLD_ICONV set in the Makefile
* "git checkout -m some-branch" while on an unborn branch crashed.
Other minor documentation updates are included.

View file

@ -0,0 +1,46 @@
Git v1.6.6.2 Release Notes
==========================
Fixes since v1.6.6.1
--------------------
* recursive merge didn't correctly diagnose its own programming errors,
and instead caused the caller to segfault.
* The new "smart http" aware clients probed the web servers to see if
they support smart http, but did not fall back to dumb http transport
correctly with some servers.
* Time based reflog syntax e.g. "@{yesterday}" didn't diagnose a misspelled
time specification and instead assumed "@{now}".
* "git archive HEAD -- no-such-directory" produced an empty archive
without complaining.
* "git blame -L start,end -- file" misbehaved when given a start that is
larger than the number of lines in the file.
* "git checkout -m" didn't correctly call custom merge backend supplied
by the end user.
* "git config -f <file>" misbehaved when run from a subdirectory.
* "git cvsserver" didn't like having regex metacharacters (e.g. '+') in
CVSROOT environment.
* "git fast-import" did not correctly handle large blobs that may
bust the pack size limit.
* "git gui" is supposed to work even when launched from inside a .git
directory.
* "git gui" misbehaved when applying a hunk that ends with deletion.
* "git imap-send" did not honor imap.preformattedHTML as documented.
* "git log" family incorrectly showed the commit notes unconditionally by
mistake, which was especially irritating when running "git log --oneline".
* "git status" shouldn't require an write access to the repository.
Other minor documentation updates are included.

View file

@ -0,0 +1,224 @@
Git v1.6.6 Release Notes
========================
Notes on behaviour change
-------------------------
* In this release, "git fsck" defaults to "git fsck --full" and
checks packfiles, and because of this it will take much longer to
complete than before. If you prefer a quicker check only on loose
objects (the old default), you can say "git fsck --no-full". This
has been supported by 1.5.4 and newer versions of git, so it is
safe to write it in your script even if you use slightly older git
on some of your machines.
Preparing yourselves for compatibility issues in 1.7.0
------------------------------------------------------
In git 1.7.0, which is planned to be the release after 1.6.6, there will
be a handful of behaviour changes that will break backward compatibility.
These changes were discussed long time ago and existing behaviours have
been identified as more problematic to the userbase than keeping them for
the sake of backward compatibility.
When necessary, a transition strategy for existing users has been designed
not to force them running around setting configuration variables and
updating their scripts in order to either keep the traditional behaviour
or adjust to the new behaviour, on the day their sysadmin decides to install
the new version of git. When we switched from "git-foo" to "git foo" in
1.6.0, even though the change had been advertised and the transition
guide had been provided for a very long time, the users procrastinated
during the entire transtion period, and ended up panicking on the day
their sysadmins updated their git installation. We are trying to avoid
repeating that unpleasantness in the 1.7.0 release.
For changes decided to be in 1.7.0, commands that will be affected
have been much louder to strongly discourage such procrastination, and
they continue to be in this release. If you have been using recent
versions of git, you would have seen warnings issued when you used
features whose behaviour will change, with a clear instruction on how
to keep the existing behaviour if you want to. You hopefully are
already well prepared.
Of course, we have also been giving "this and that will change in
1.7.0; prepare yourselves" warnings in the release notes and
announcement messages for the past few releases. Let's see how well
users will fare this time.
* "git push" into a branch that is currently checked out (i.e. pointed by
HEAD in a repository that is not bare) will be 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. Versions of git
since 1.6.2 have issued a loud warning when you tried to do these
operations without setting the configuration, so repositories of
people who still need to be able to perform such a push should
already have been future proofed.
Please refer to:
http://git.or.cz/gitwiki/GitFaq#non-bare
http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
for more details on the reason why this change is needed and the
transition process that already took place so far.
* "git send-email" will 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. Git 1.6.6 (this
release) will issue a warning about the upcoming default change, when
it uses the traditional "deep threading" behaviour as the built-in
default. To squelch the warning but still use the "deep threading"
behaviour, give --chain-reply-to option or set sendemail.chainreplyto
to true.
It has been possible to configure send-email to send "shallow thread"
by setting sendemail.chainreplyto configuration variable to false.
The only thing 1.7.0 release will do is to change the default when
you haven't configured that variable.
* "git status" will not be "git commit --dry-run". This change does not
affect you if you run the command without pathspec.
Nobody sane found the current behaviour of "git status Makefile" useful
nor meaningful, and it confused users. "git commit --dry-run" has been
provided as a way to get the current behaviour of this command since
1.6.5.
* "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 1.7.0, the "ignore whitespaces" will affect the semantics of the
diff operation itself. A change that does not affect anything but
whitespaces will be reported with zero exit status when run with
--exit-code, and there will not be "diff --git" header for such a
change.
Updates since v1.6.5
--------------------
(subsystems)
* various gitk updates including use of themed widgets under Tk 8.5,
Japanese translation, a fix to a bug when running "gui blame" from
a subdirectory, etc.
* various git-gui updates including new translations, wm states fixes,
Tk bug workaround after quitting, improved heuristics to trigger gc,
etc.
* various git-svn updates.
* "git fetch" over http learned a new mode that is different from the
traditional "dumb commit walker".
(portability)
* imap-send can be built on mingw port.
(performance)
* "git diff -B" has smaller memory footprint.
(usability, bells and whistles)
* The object replace mechanism can be bypassed with --no-replace-objects
global option given to the "git" program.
* In configuration files, a few variables that name paths can begin with ~/
and ~username/ and they are expanded as expected.
* "git subcmd -h" now shows short usage help for many more subcommands.
* "git bisect reset" can reset to an arbitrary commit.
* "git checkout frotz" when there is no local branch "frotz" but there
is only one remote tracking branch "frotz" is taken as a request to
start the named branch at the corresponding remote tracking branch.
* "git commit -c/-C/--amend" can be told with a new "--reset-author" option
to ignore authorship information in the commit it is taking the message
from.
* "git describe" can be told to add "-dirty" suffix with "--dirty" option.
* "git diff" learned --submodule option to show a list of one-line logs
instead of differences between the commit object names.
* "git diff" learned to honor diff.color.func configuration to paint
function name hint printed on the hunk header "@@ -j,k +l,m @@" line
in the specified color.
* "git fetch" learned --all and --multiple options, to run fetch from
many repositories, and --prune option to remove remote tracking
branches that went stale. These make "git remote update" and "git
remote prune" less necessary (there is no plan to remove "remote
update" nor "remote prune", though).
* "git fsck" by default checks the packfiles (i.e. "--full" is the
default); you can turn it off with "git fsck --no-full".
* "git grep" can use -F (fixed strings) and -i (ignore case) together.
* import-tars contributed fast-import frontend learned more types of
compressed tarballs.
* "git instaweb" knows how to talk with mod_cgid to apache2.
* "git log --decorate" shows the location of HEAD as well.
* "git log" and "git rev-list" learned to take revs and pathspecs from
the standard input with the new "--stdin" option.
* "--pretty=format" option to "log" family of commands learned:
. to wrap text with the "%w()" specifier.
. to show reflog information with "%g[sdD]" specifier.
* "git notes" command to annotate existing commits.
* "git merge" (and "git pull") learned --ff-only option to make it fail
if the merge does not result in a fast-forward.
* "git mergetool" learned to use p4merge.
* "git rebase -i" learned "reword" that acts like "edit" but immediately
starts an editor to tweak the log message without returning control to
the shell, which is done by "edit" to give an opportunity to tweak the
contents.
* "git send-email" can be told with "--envelope-sender=auto" to use the
same address as "From:" address as the envelope sender address.
* "git send-email" will issue a warning when it defaults to the
--chain-reply-to behaviour without being told by the user and
instructs to prepare for the change of the default in 1.7.0 release.
* In "git submodule add <repository> <path>", <path> is now optional and
inferred from <repository> the same way "git clone <repository>" does.
* "git svn" learned to read SVN 1.5+ and SVK merge tickets.
* "git svn" learned to recreate empty directories tracked only by SVN.
* "gitweb" can optionally render its "blame" output incrementally (this
requires JavaScript on the client side).
* Author names shown in gitweb output are links to search commits by the
author.
Fixes since v1.6.5
------------------
All of the fixes in v1.6.5.X maintenance series are included in this
release, unless otherwise noted.

View file

@ -0,0 +1,35 @@
Git v1.7.0.1 Release Notes
==========================
Fixes since v1.7.0
------------------
* In a freshly created repository "rev-parse HEAD^0" complained that
it is dangling symref, even though "rev-parse HEAD" didn't.
* "git show :no-such-name" tried to access the index without bounds
check, leading to a potential segfault.
* Message from "git cherry-pick" was harder to read and use than necessary
when it stopped due to conflicting changes.
* We referred to ".git/refs/" throughout the documentation when we
meant to talk about abstract notion of "ref namespace". Because
people's repositories often have packed refs these days, this was
confusing.
* "git diff --output=/path/that/cannot/be/written" did not correctly
error out.
* "git grep -e -pattern-that-begin-with-dash paths..." could not be
spelled as "git grep -- -pattern-that-begin-with-dash paths..." which
would be a GNU way to use "--" as "end of options".
* "git grep" compiled with threading support tried to access an
uninitialized mutex on boxes with a single CPU.
* "git stash pop -q --index" failed because the unnecessary --index
option was propagated to "git stash drop" that is internally run at the
end.
And other minor fixes and documentation updates.

View file

@ -0,0 +1,40 @@
Git v1.7.0.2 Release Notes
==========================
Fixes since v1.7.0.1
--------------------
* GIT_PAGER was not honored consistently by some scripted Porcelains, most
notably "git am".
* updating working tree files after telling git to add them to the
index and while it is still working created garbage object files in
the repository without diagnosing it as an error.
* "git bisect -- pathspec..." did not diagnose an error condition properly when
the simplification with given pathspec made the history empty.
* "git rev-list --cherry-pick A...B" now has an obvious optimization when the
histories haven't diverged (i.e. when one end is an ancestor of the other).
* "git diff --quiet -w" did not work as expected.
* "git fast-import" didn't work with a large input, as it lacked support
for producing the pack index in v2 format.
* "git imap-send" didn't use CRLF line endings over the imap protocol
when storing its payload to the draft box, violating RFC 3501.
* "git log --format='%w(x,y,z)%b'" and friends that rewrap message
has been optimized for utf-8 payload.
* Error messages generated on the receiving end did not come back to "git
push".
* "git status" in 1.7.0 lacked the optimization we used to have in 1.6.X series
to speed up scanning of large working tree.
* "gitweb" did not diagnose parsing errors properly while reading tis configuration
file.
And other minor fixes and documentation updates.

View file

@ -0,0 +1,34 @@
Git v1.7.0.3 Release Notes
==========================
Fixes since v1.7.0.2
--------------------
* Object files are created in a more ACL friendly way in repositories
where group permission is ACL controlled.
* "git add -i" didn't handle a deleted path very well.
* "git blame" padded line numbers with one extra SP when the total number
of lines was one less than multiple of ten due to an off-by-one error.
* "git fetch --all/--multi" used to discard information for remotes that
are fetched earlier.
* "git log --author=me --grep=it" tried to find commits that have "it"
or are written by "me", instead of the ones that have "it" _and_ are
written by "me".
* "git log -g branch" misbehaved when there was no entries in the reflog
for the named branch.
* "git mailinfo" (hence "git am") incorrectly removed initial indent from
paragraphs.
* "git prune" and "git reflog" (hence "git gc" as well) didn't honor
an instruction never to expire by setting gc.reflogexpire to never.
* "git push" misbehaved when branch.<name>.merge was configured without
matching branch.<name>.remote.
And other minor fixes and documentation updates.

View file

@ -0,0 +1,27 @@
Git v1.7.0.4 Release Notes
==========================
Fixes since v1.7.0.3
--------------------
* Optimized ntohl/htonl on big-endian machines were broken.
* Color values given to "color.<cmd>.<slot>" configuration can now have
more than one attributes (e.g. "bold ul").
* "git add -u nonexistent-path" did not complain.
* "git apply --whitespace=fix" didn't work well when an early patch in
a patch series adds trailing blank lines and a later one depended on
such a block of blank lines at the end.
* "git fast-export" didn't check error status and stop when marks file
cannot be opened.
* "git format-patch --ignore-if-in-upstream" gave unwarranted errors
when the range was empty, instead of silently finishing.
* "git remote prune" did not detect remote tracking refs that became
dangling correctly.
And other minor fixes and documentation updates.

View file

@ -0,0 +1,26 @@
Git v1.7.0.5 Release Notes
==========================
Fixes since v1.7.0.4
--------------------
* "git daemon" failed to compile on platforms without sockaddr_storage type.
* Output from "git rev-list --pretty=oneline" was unparsable when a
commit did not have any message, which is abnormal but possible in a
repository converted from foreign scm.
* "git stash show <commit-that-is-not-a-stash>" gave an error message
that was not so useful. Reworded the message to "<it> is not a
stash".
* Python scripts in contrib/ area now start with "#!/usr/bin/env python"
to honor user's PATH.
* "git imap-send" used to mistake any line that begins with "From " as a
message separator in format-patch output.
* Smart http server backend failed to report an internal server error and
infinitely looped instead after output pipe was closed.
And other minor fixes and documentation updates.

View file

@ -0,0 +1,13 @@
Git v1.7.0.6 Release Notes
==========================
Fixes since v1.7.0.5
--------------------
* "git diff --stat" used "int" to count the size of differences,
which could result in overflowing.
* "git rev-list --abbrev-commit" defaulted to 40-byte abbreviations, unlike
newer tools in the git toolset.
And other minor fixes and documentation updates.

View file

@ -0,0 +1,214 @@
Git v1.7.0 Release Notes
========================
Notes on behaviour change
-------------------------
* "git push" into a branch that is currently checked out (i.e. pointed at 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 already 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 argument.
* "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
amount 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.
* External diff and textconv helpers are now executed using the shell.
This makes them consistent with other programs executed by git, and
allows you to pass command-line parameters to the helpers. Any helper
paths containing spaces or other metacharacters now need to be
shell-quoted. The affected helpers are GIT_EXTERNAL_DIFF in the
environment, and diff.*.command and diff.*.textconv in the config
file.
* The --max-pack-size argument to 'git repack', 'git pack-objects', and
'git fast-import' was assuming the provided size to be expressed in MiB,
unlike the corresponding config variable and other similar options accepting
a size value. It is now expecting a size expressed in bytes, with a possible
unit suffix of 'k', 'm', or 'g'.
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.
* "git svn" support of subversion "merge tickets" and miscellaneous fixes.
* "gitk" and "git gui" translation updates.
* "gitweb" updates (code clean-up, load checking etc.)
(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 am --resolved" has a synonym "git am --continue".
* "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. It can use more than
one thread to accelerate the operation.
* "git grep" learned "--quiet" option.
* "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 that updates (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.
* THREADED_DELTA_SEARCH is no more. If you build with threads, delta
compression will always take advantage of it.
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.
* "fiter-branch" command incorrectly said --prune-empty and --filter-commit
were incompatible; the latter should be read as --commit-filter.
* When using "git status" or asking "git diff" to compare the work tree
with something, they 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. They now consider such a change as a modification and
"git diff" will append a "-dirty" to the work tree side when generating
patch output or when used with the --submodule option.

View file

@ -0,0 +1,96 @@
Git v1.7.1.1 Release Notes
==========================
Fixes since v1.7.1
------------------
* Authentication over http transport can now be made lazily, in that the
request can first go to a URL without username, get a 401 response and
then the client will ask for the username to use.
* We used to mistakenly think "../work" is a subdirectory of the current
directory when we are in "../work-xyz".
* The attribute mechanism now allows an entry that uses an attribute
macro that set/unset one attribute, immediately followed by an
overriding setting; this makes attribute macros much easier to use.
* We didn't recognize timezone "Z" as a synonym for "UTC" (75b37e70).
* In 1.7.0, read-tree and user commands that use the mechanism such as
checkout and merge were fixed to handle switching between branches one
of which has a file while the other has a directory at the same path
correctly even when there are some "confusing" pathnames in them. But
the algorithm used for this fix was suboptimal and had a terrible
performance degradation especially in larger trees.
* "git am -3" did not show diagnosis when the patch in the message was corrupt.
* After "git apply --whitespace=fix" removed trailing blank lines in an
patch in a patch series, it failed to apply later patches that depend
on the presence of such blank lines.
* "git bundle --stdin" segfaulted.
* "git checkout" and "git rebase" overwrote paths that are marked "assume
unchanged".
* "git commit --amend" on a commit with an invalid author-name line that
lacks the display name didn't work.
* "git describe" did not tie-break tags that point at the same commit
correctly; newer ones are preferred by paying attention to the
tagger date now.
* "git diff" used to tell underlying xdiff machinery to work very hard to
minimize the output, but this often was spending too many extra cycles
for very little gain.
* "git diff --color" did not paint extended diff headers per line
(i.e. the coloring escape sequence didn't end at the end of line),
which confused "less -R".
* "git fetch" over HTTP verifies the downloaded packfiles more robustly.
* The memory usage by "git index-pack" (run during "git fetch" and "git
push") got leaner.
* "GIT_DIR=foo.git git init --bare bar.git" created foo.git instead of bar.git.
* "git log --abbrev=$num --format='%h' ignored --abbrev=$num.
* "git ls-files ../out/side/cwd" refused to work.
* "git merge --log" used to replace the custom message given by "-m" with
the shortlog, instead of appending to it.
* "git notes copy" without any other argument segfaulted.
* "git pull" accepted "--dry-run", gave it to underlying "git fetch" but
ignored the option itself, resulting in a bogus attempt to merge
unrelated commit.
* "git rebase" did not faithfully reproduce a malformed author ident, that
is often seen in a repository converted from foreign SCMs.
* "git reset --hard" started from a wrong directory and a working tree in
a nonstandard location is in use got confused.
* "git send-email" lacked a way to specify the domainname used in the
EHLO/HELO exchange, causing rejected connection from picky servers.
It learned --smtp-domain option to solve this issue.
* "git send-email" did not declare a content-transfer-encoding and
content-type even when its payload needs to be sent in 8-bit.
* "git show -C -C" and other corner cases lost diff metainfo output
in 1.7.0.
* "git stash" incorrectly lost paths in the working tree that were
previously removed from the index.
* "git status" stopped refreshing the index by mistake in 1.7.1.
* "git status" showed excess "hints" even when advice.statusHints is set to false.
And other minor fixes and documentation updates.

View file

@ -0,0 +1,19 @@
Git v1.7.1.2 Release Notes
==========================
Fixes since v1.7.1.1
--------------------
* "git commit" did not honor GIT_REFLOG_ACTION environment variable, resulting
reflog messages for cherry-pick and revert actions to be recorded as "commit".
* "git clone/fetch/pull" issued an incorrect error message when a ref and
a symref that points to the ref were updated at the same time. This
obviously would update them to the same value, and should not result in
an error condition.
* "git diff" inside a tree with many pathnames that have certain
characters has become very slow in 1.7.0 by mistake.
* "git rev-parse --parseopt --stop-at-non-option" did not stop at non option
when --keep-dashdash was in effect.

View file

@ -0,0 +1,89 @@
Git v1.7.1 Release Notes
========================
Updates since v1.7.0
--------------------
* Eric Raymond is the maintainer of updated CIAbot scripts, in contrib/.
* gitk updates.
* Some commands (e.g. svn and http interfaces) that interactively ask
for a password can be told to use an external program given via
GIT_ASKPASS.
* Conflict markers that lead the common ancestor in diff3-style output
now have a label, which hopefully would help third-party tools that
expect one.
* Comes with an updated bash-completion script.
* "git am" learned "--keep-cr" option to handle inputs that are
a mixture of changes to files with and without CRLF line endings.
* "git cvsimport" learned -R option to leave revision mapping between
CVS revisions and resulting git commits.
* "git diff --submodule" notices and describes dirty submodules.
* "git for-each-ref" learned %(symref), %(symref:short) and %(flag)
tokens.
* "git hash-object --stdin-paths" can take "--no-filters" option now.
* "git init" can be told to look at init.templatedir configuration
variable (obviously that has to come from either /etc/gitconfig or
$HOME/.gitconfig).
* "git grep" learned "--no-index" option, to search inside contents that
are not managed by git.
* "git grep" learned --color=auto/always/never.
* "git grep" learned to paint filename and line-number in colors.
* "git log -p --first-parent -m" shows one-parent diff for merge
commits, instead of showing combined diff.
* "git merge-file" learned to use custom conflict marker size and also
to use the "union merge" behaviour.
* "git notes" command has been rewritten in C and learned many commands
and features to help you carry notes forward across rebases and amends.
* "git request-pull" identifies the commit the request is relative to in
a more readable way.
* "git reset" learned "--keep" option that lets you discard commits
near the tip while preserving your local changes in a way similar
to how "git checkout branch" does.
* "git status" notices and describes dirty submodules.
* "git svn" should work better when interacting with repositories
with CRLF line endings.
* "git imap-send" learned to support CRAM-MD5 authentication.
* "gitweb" installation procedure can use "minified" js/css files
better.
* Various documentation updates.
Fixes since v1.7.0
------------------
All of the fixes in v1.7.0.X maintenance series are included in this
release, unless otherwise noted.
* "git add frotz/nitfol" did not complain when the entire frotz/ directory
was ignored.
* "git diff --stat" used "int" to count the size of differences,
which could result in overflowing.
* "git rev-list --pretty=oneline" didn't terminate a record with LF for
commits without any message.
* "git rev-list --abbrev-commit" defaulted to 40-byte abbreviations, unlike
newer tools in the git toolset.

View file

@ -0,0 +1,152 @@
Git v1.7.2 Release Notes (draft)
================================
Updates since v1.7.1
--------------------
* core.eol configuration and text/eol attributes are the new way to control
the end of line conventions for files in the working tree.
* core.autocrlf has been made safer - it will now only handle line
endings for new files and files that are LF-only in the
repository. To normalize content that has been checked in with
CRLF, use the new eol/text attributes.
* The whitespace rules used in "git apply --whitespace" and "git diff"
gained a new member in the family (tab-in-indent) to help projects with
policy to indent only with spaces.
* When working from a subdirectory, by default, git does not look for its
metadirectory ".git" across filesystems, primarily to help people who
have invocations of git in their custom PS1 prompts, as being outside
of a git repository would look for ".git" all the way up to the root
directory, and NFS mounts are often slow. DISCOVERY_ACROSS_FILESYSTEM
environment variable can be used to tell git not to stop at a
filesystem boundary.
* Usage help messages generated by parse-options library (i.e. most
of the Porcelain commands) are sent to the standard output now.
* ':/<string>' notation to look for a commit now takes regular expression
and it is not anchored at the beginning of the commit log message
anymore (this is a backward incompatible change).
* "git" wrapper learned "-c name=value" option to override configuration
variable from the command line.
* Improved portability for various platforms including older SunOS,
HP-UX 10/11, AIX, Tru64, etc. and platforms with Python 2.4.
* The message from "git am -3" has been improved when conflict
resolution ended up making the patch a no-op.
* "git blame" applies the textconv filter to the contents it works
on, when available.
* "git checkout --orphan newbranch" is similar to "-b newbranch" but
prepares to create a root commit that is not connected to any existing
commit.
* "git cherry-pick" learned to pick a range of commits
(e.g. "cherry-pick A..B" and "cherry-pick --stdin"), so did "git
revert"; these do not support the nicer sequencing control "rebase
[-i]" has, though.
* "git cherry-pick" and "git revert" learned --strategy option to specify
the merge strategy to be used when performing three-way merges.
* "git cvsserver" can be told to use pserver; its password file can be
stored outside the repository.
* The output from the textconv filter used by "git diff" can be cached to
speed up their reuse.
* "git diff --word-diff=<mode>" extends the existing "--color-words"
option, making it more useful in color-challenged environments.
* The regexp to detect function headers used by "git diff" for PHP has
been enhanced for visibility modifiers (public, protected, etc.) to
better support PHP5.
* "diff.noprefix" configuration variable can be used to implicitly
ask for "diff --no-prefix" behaviour.
* "git for-each-ref" learned "%(objectname:short)" that gives the object
name abbreviated.
* "git format-patch" learned --signature option and format.signature
configuration variable to customize the e-mail signature used in the
output.
* Various options to "git grep" (e.g. --count, --name-only) work better
with binary files.
* "git grep" learned "-Ovi" to open the files with hits in your editor.
* "git help -w" learned "chrome" and "chromium" browsers.
* "git log --decorate" shows commit decorations in various colours.
* "git log --follow <path>" follows across copies (it used to only follow
renames). This may make the processing more expensive.
* "git log --pretty=format:<template>" specifier learned "% <something>"
magic that inserts a space only when %<something> expands to a
non-empty string; this is similar to "%+<something>" magic, but is
useful in a context to generate a single line output.
* "git notes prune" learned "-n" (dry-run) and "-v" options, similar to
what "git prune" has.
* "git patch-id" can be fed a mbox without getting confused by the
signature line in the format-patch output.
* "git remote" learned "set-branches" subcommand.
* "git rev-list A..B" learned --ancestry-path option to further limit
the result to the commits that are on the ancestry chain between A and
B (i.e. commits that are not descendants of A are excluded).
* "git show -5" is equivalent to "git show --do-walk 5"; this is similar
to the update to make "git show master..next" walk the history,
introduced in 1.6.4.
* "git status [-s] --ignored" can be used to list ignored paths.
* "git status -s -b" shows the current branch in the output.
* "git status" learned "--ignore-submodules" option.
* Various "gitweb" enhancements and clean-ups, including syntax
highlighting, "plackup" support for instaweb, .fcgi suffix to run
it as FastCGI script, etc.
* The test harness has been updated to produce TAP-friendly output.
Fixes since v1.7.1
------------------
All of the fixes in v1.7.1.X maintenance series are included in this
release, unless otherwise noted.
* We didn't URL decode "file:///path/to/repo" correctly when path/to/repo
had percent-encoded characters (638794c, 9d2e942, ce83eda, 3c73a1d).
* "git clone" did not configure remote.origin.url correctly for bare
clones (df61c889).
* "git diff --graph" works better with "--color-words" and other options
(81fa024..4297c0a).
* "git diff" could show ambiguous abbreviation of blob object names on
its "index" line (3e5a188).
* "git reset --hard" started from a wrong directory and a working tree in
a nonstandard location is in use got confused (560fb6a1).
--
exec >/var/tmp/1
O=v1.7.2-rc1-37-g2a16315
echo O=$(git describe HEAD)
git shortlog --no-merges HEAD ^maint ^$O

View file

@ -41,6 +41,7 @@ Checklist (and a short version for the impatient):
maintainer (gitster@pobox.com) if (and only if) the patch maintainer (gitster@pobox.com) if (and only if) the patch
is ready for inclusion. If you use git-send-email(1), is ready for inclusion. If you use git-send-email(1),
please test it first by sending email to yourself. please test it first by sending email to yourself.
- see below for instructions specific to your mailer
Long version: Long version:
@ -53,6 +54,34 @@ But the patch submission requirements are a lot more relaxed
here on the technical/contents front, because the core GIT is here on the technical/contents front, because the core GIT is
thousand times smaller ;-). So here is only the relevant bits. thousand times smaller ;-). So here is only the relevant bits.
(0) Decide what to base your work on.
In general, always base your work on the oldest branch that your
change is relevant to.
- A bugfix should be based on 'maint' in general. If the bug is not
present in 'maint', base it on 'master'. For a bug that's not yet
in 'master', find the topic that introduces the regression, and
base your work on the tip of the topic.
- A new feature should be based on 'master' in general. If the new
feature depends on a topic that is in 'pu', but not in 'master',
base your work on the tip of that topic.
- Corrections and enhancements to a topic not yet in 'master' should
be based on the tip of that topic. If the topic has not been merged
to 'next', it's alright to add a note to squash minor corrections
into the series.
- In the exceptional case that a new feature depends on several topics
not in 'master', start working on 'next' or 'pu' privately and send
out patches for discussion. Before the final merge, you may have to
wait until some of the dependent topics graduate to 'master', and
rebase your work.
To find the tip of a topic branch, run "git log --first-parent
master..pu" and look for the merge commit. The second parent of this
commit is the tip of the topic branch.
(1) Make separate commits for logically separate changes. (1) Make separate commits for logically separate changes.
@ -170,17 +199,16 @@ patch, format it as "multipart/signed", not a text/plain message
that starts with '-----BEGIN PGP SIGNED MESSAGE-----'. That is that starts with '-----BEGIN PGP SIGNED MESSAGE-----'. That is
not a text/plain, it's something else. not a text/plain, it's something else.
Note that your maintainer does not necessarily read everything Unless your patch is a very trivial and an obviously correct one,
on the git mailing list. If your patch is for discussion first, first send it with "To:" set to the mailing list, with "cc:" listing
send it "To:" the mailing list, and optionally "cc:" him. If it people who are involved in the area you are touching (the output from
is trivially correct or after the list reached a consensus, send "git blame $path" and "git shortlog --no-merges $path" would help to
it "To:" the maintainer and optionally "cc:" the list for identify them), to solicit comments and reviews. After the list
inclusion. reached a consensus that it is a good idea to apply the patch, re-send
it with "To:" set to the maintainer and optionally "cc:" the list for
Also note that your maintainer does not actively involve himself in inclusion. Do not forget to add trailers such as "Acked-by:",
maintaining what are in contrib/ hierarchy. When you send fixes and "Reviewed-by:" and "Tested-by:" after your "Signed-off-by:" line as
enhancements to them, do not forget to "cc: " the person who primarily necessary.
worked on that hierarchy in contrib/.
(4) Sign your work (4) Sign your work
@ -279,6 +307,20 @@ from the list and queue it to 'pu', in order to make it easier for
people play with it without having to pick up and apply the patch to people play with it without having to pick up and apply the patch to
their trees themselves. their trees themselves.
------------------------------------------------
Know the status of your patch after submission
* You can use Git itself to find out when your patch is merged in
master. 'git pull --rebase' will automatically skip already-applied
patches, and will let you know. This works only if you rebase on top
of the branch in which your patch has been merged (i.e. it will not
tell you if your patch is merged in pu if you rebase on top of
master).
* Read the git mailing list, the maintainer regularly posts messages
entitled "What's cooking in git.git" and "What's in git.git" giving
the status of various proposed changes.
------------------------------------------------ ------------------------------------------------
MUA specific hints MUA specific hints
@ -505,12 +547,28 @@ Gmail
GMail does not appear to have any way to turn off line wrapping in the web GMail does not appear to have any way to turn off line wrapping in the web
interface, so this will mangle any emails that you send. You can however interface, so this will mangle any emails that you send. You can however
use any IMAP email client to connect to the google imap server, and forward use "git send-email" and send your patches through the GMail SMTP server, or
the emails through that. Just make sure to disable line wrapping in that use any IMAP email client to connect to the google IMAP server and forward
email client. Alternatively, use "git send-email" instead. the emails through that.
Submitting properly formatted patches via Gmail is simple now that To use "git send-email" and send your patches through the GMail SMTP server,
IMAP support is available. First, edit your ~/.gitconfig to specify your edit ~/.gitconfig to specify your account settings:
[sendemail]
smtpencryption = tls
smtpserver = smtp.gmail.com
smtpuser = user@gmail.com
smtppass = p4ssw0rd
smtpserverport = 587
Once your commits are ready to be sent to the mailing list, run the
following commands:
$ git format-patch --cover-letter -M origin/master -o outgoing/
$ edit outgoing/0000-*
$ git send-email outgoing/*
To submit using the IMAP interface, first, edit your ~/.gitconfig to specify your
account settings: account settings:
[imap] [imap]
@ -524,14 +582,12 @@ account settings:
You might need to instead use: folder = "[Google Mail]/Drafts" if you get an error You might need to instead use: folder = "[Google Mail]/Drafts" if you get an error
that the "Folder doesn't exist". that the "Folder doesn't exist".
Next, ensure that your Gmail settings are correct. In "Settings" the Once your commits are ready to be sent to the mailing list, run the
"Use Unicode (UTF-8) encoding for outgoing messages" should be checked. following commands:
Once your commits are ready to send to the mailing list, run the following $ git format-patch --cover-letter -M --stdout origin/master | git imap-send
command to send the patch emails to your Gmail Drafts folder.
$ git format-patch -M --stdout origin/master | git imap-send Just make sure to disable line wrapping in the email client (GMail web
interface will line wrap no matter what, so you need to use a real
Go to your Gmail account, open the Drafts folder, find the patch email, fill IMAP client).
in the To: and CC: fields and send away!

View file

@ -79,32 +79,37 @@ of lines before or after the line given by <start>.
of the --date option at linkgit:git-log[1]. of the --date option at linkgit:git-log[1].
-M|<num>|:: -M|<num>|::
Detect moving lines in the file as well. When a commit Detect moved or copied lines within a file. When a commit
moves a block of lines in a file (e.g. the original file moves or copies a block of lines (e.g. the original file
has A and then B, and the commit changes it to B and has A and then B, and the commit changes it to B and then
then A), the traditional 'blame' algorithm typically blames A), the traditional 'blame' algorithm notices only half of
the lines that were moved up (i.e. B) to the parent and the movement and typically blames the lines that were moved
assigns blame to the lines that were moved down (i.e. A) up (i.e. B) to the parent and assigns blame to the lines that
to the child commit. With this option, both groups of lines were moved down (i.e. A) to the child commit. With this
are blamed on the parent. option, both groups of lines are blamed on the parent by
running extra passes of inspection.
+ +
<num> is optional but it is the lower bound on the number of <num> is optional but it is the lower bound on the number of
alphanumeric characters that git must detect as moving alphanumeric characters that git must detect as moving/copying
within a file for it to associate those lines with the parent within a file for it to associate those lines with the parent
commit. commit. The default value is 20.
-C|<num>|:: -C|<num>|::
In addition to `-M`, detect lines copied from other In addition to `-M`, detect lines moved or copied from other
files that were modified in the same commit. This is files that were modified in the same commit. This is
useful when you reorganize your program and move code useful when you reorganize your program and move code
around across files. When this option is given twice, around across files. When this option is given twice,
the command additionally looks for copies from all other the command additionally looks for copies from other
files in the parent for the commit that creates the file. files in the commit that creates the file. When this
option is given three times, the command additionally
looks for copies from other files in any commit.
+ +
<num> is optional but it is the lower bound on the number of <num> is optional but it is the lower bound on the number of
alphanumeric characters that git must detect as moving alphanumeric characters that git must detect as moving/copying
between files for it to associate those lines with the parent between files for it to associate those lines with the parent
commit. commit. And the default value is 40. If there are more than one
`-C` options given, the <num> argument of the last `-C` will
take effect.
-h:: -h::
--help:: --help::

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
@ -113,10 +113,46 @@ For command-specific variables, you will find a more detailed description
in the appropriate manual page. You will find a description of non-core in the appropriate manual page. You will find a description of non-core
porcelain configuration variables in the respective porcelain documentation. porcelain configuration variables in the respective porcelain documentation.
advice.*::
When set to 'true', display the given optional help message.
When set to 'false', do not display. The configuration variables
are:
+
--
pushNonFastForward::
Advice shown when linkgit:git-push[1] refuses
non-fast-forward refs. Default: true.
statusHints::
Directions on how to stage/unstage/add shown in the
output of linkgit:git-status[1] and the template shown
when writing commit messages. Default: true.
commitBeforeMerge::
Advice shown when linkgit:git-merge[1] refuses to
merge to avoid overwritting local changes.
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.
detachedHead::
Advice shown when you used linkgit::git-checkout[1] to
move to the detach HEAD state, to instruct how to create
a local branch after the fact. Default: true.
--
core.fileMode:: core.fileMode::
If false, the executable bit differences between the index and If false, the executable bit differences between the index and
the working copy are ignored; useful on broken filesystems like FAT. the working copy are ignored; useful on broken filesystems like FAT.
See linkgit:git-update-index[1]. True by default. See linkgit:git-update-index[1].
+
The default is true, except linkgit:git-clone[1] or linkgit:git-init[1]
will probe and set core.fileMode false if appropriate when the
repository is created.
core.ignoreCygwinFSTricks:: core.ignoreCygwinFSTricks::
This option is only used by Cygwin implementation of Git. If false, This option is only used by Cygwin implementation of Git. If false,
@ -129,6 +165,18 @@ core.ignoreCygwinFSTricks::
is true, in which case ignoreCygwinFSTricks is ignored as Cygwin's is true, in which case ignoreCygwinFSTricks is ignored as Cygwin's
POSIX emulation is required to support core.filemode. POSIX emulation is required to support core.filemode.
core.ignorecase::
If true, this option enables various workarounds to enable
git to work better on filesystems that are not case sensitive,
like FAT. For example, if a directory listing finds
"makefile" when git expects "Makefile", git will assume
it is really the same file, and continue to remember it as
"Makefile".
+
The default is false, except linkgit:git-clone[1] or linkgit:git-init[1]
will probe and set core.ignorecase true if appropriate when the repository
is created.
core.trustctime:: core.trustctime::
If false, the ctime differences between the index and the If false, the ctime differences between the index and the
working copy are ignored; useful when the inode change time working copy are ignored; useful when the inode change time
@ -148,19 +196,17 @@ core.quotepath::
quoted without `-z` regardless of the setting of this quoted without `-z` regardless of the setting of this
variable. variable.
core.autocrlf:: core.eol::
If true, makes git convert `CRLF` at the end of lines in text files to Sets the line ending type to use in the working directory for
`LF` when reading from the filesystem, and convert in reverse when files that have the `text` property set. Alternatives are
writing to the filesystem. The variable can be set to 'lf', 'crlf' and 'native', which uses the platform's native
'input', in which case the conversion happens only while line ending. The default value is `native`. See
reading from the filesystem but files are written out with linkgit:gitattributes[5] for more information on end-of-line
`LF` at the end of lines. Currently, which paths to consider conversion.
"text" (i.e. be subjected to the autocrlf mechanism) is
decided purely based on the contents.
core.safecrlf:: core.safecrlf::
If true, makes git check if converting `CRLF` as controlled by If true, makes git check if converting `CRLF` is reversible when
`core.autocrlf` is reversible. Git will verify if a command end-of-line conversion is active. Git will verify if a command
modifies a file in the work tree either directly or indirectly. modifies a file in the work tree either directly or indirectly.
For example, committing a file followed by checking out the For example, committing a file followed by checking out the
same file should yield the original file in the work tree. If same file should yield the original file in the work tree. If
@ -170,7 +216,7 @@ core.safecrlf::
irreversible conversion but continue the operation. irreversible conversion but continue the operation.
+ +
CRLF conversion bears a slight chance of corrupting data. CRLF conversion bears a slight chance of corrupting data.
autocrlf=true will convert CRLF to LF during commit and LF to When it is enabled, git will convert CRLF to LF during commit and LF to
CRLF during checkout. A file that contains a mixture of LF and CRLF during checkout. A file that contains a mixture of LF and
CRLF before the commit cannot be recreated by git. For text CRLF before the commit cannot be recreated by git. For text
files this is the right thing to do: it corrects line endings files this is the right thing to do: it corrects line endings
@ -194,21 +240,35 @@ converting CRLFs corrupts data.
+ +
Note, this safety check does not mean that a checkout will generate a Note, this safety check does not mean that a checkout will generate a
file identical to the original file for a different setting of file identical to the original file for a different setting of
`core.autocrlf`, but only for the current one. For example, a text `core.eol` and `core.autocrlf`, but only for the current one. For
file with `LF` would be accepted with `core.autocrlf=input` and could example, a text file with `LF` would be accepted with `core.eol=lf`
later be checked out with `core.autocrlf=true`, in which case the and could later be checked out with `core.eol=crlf`, in which case the
resulting file would contain `CRLF`, although the original file resulting file would contain `CRLF`, although the original file
contained `LF`. However, in both work trees the line endings would be contained `LF`. However, in both work trees the line endings would be
consistent, that is either all `LF` or all `CRLF`, but never mixed. A consistent, that is either all `LF` or all `CRLF`, but never mixed. A
file with mixed line endings would be reported by the `core.safecrlf` file with mixed line endings would be reported by the `core.safecrlf`
mechanism. mechanism.
core.autocrlf::
Setting this variable to "true" is almost the same as setting
the `text` attribute to "auto" on all files except that text
files are not guaranteed to be normalized: files that contain
`CRLF` in the repository will not be touched. Use this
setting if you want to have `CRLF` line endings in your
working directory even though the repository does not have
normalized line endings. This variable can be set to 'input',
in which case no output conversion is performed.
core.symlinks:: core.symlinks::
If false, symbolic links are checked out as small plain files that If false, symbolic links are checked out as small plain files that
contain the link text. linkgit:git-update-index[1] and contain the link text. linkgit:git-update-index[1] and
linkgit:git-add[1] will not change the recorded type to regular linkgit:git-add[1] will not change the recorded type to regular
file. Useful on filesystems like FAT that do not support file. Useful on filesystems like FAT that do not support
symbolic links. True by default. symbolic links.
+
The default is true, except linkgit:git-clone[1] or linkgit:git-init[1]
will probe and set core.symlinks false if appropriate when the repository
is created.
core.gitProxy:: core.gitProxy::
A "proxy command" to execute (as 'command host port') instead A "proxy command" to execute (as 'command host port') instead
@ -257,17 +317,24 @@ false), while all other repositories are assumed to be bare (bare
= true). = true).
core.worktree:: core.worktree::
Set the path to the working tree. The value will not be Set the path to the root of the work tree.
used in combination with repositories found automatically in
a .git directory (i.e. $GIT_DIR is not set).
This can be overridden by the GIT_WORK_TREE environment This can be overridden by the GIT_WORK_TREE environment
variable and the '--work-tree' command line option. It can be variable and the '--work-tree' command line option. It can be
a absolute path or relative path to the directory specified by an absolute path or a relative path to the .git directory,
--git-dir or GIT_DIR. either specified by --git-dir or GIT_DIR, or automatically
Note: If --git-dir or GIT_DIR are specified but none of discovered.
If --git-dir or GIT_DIR are specified but none of
--work-tree, GIT_WORK_TREE and core.worktree is specified, --work-tree, GIT_WORK_TREE and core.worktree is specified,
the current working directory is regarded as the top directory the current working directory is regarded as the root of the
of your working tree. work tree.
+
Note that this variable is honored even when set in a configuration
file in a ".git" subdirectory of a directory, and its value differs
from the latter directory (e.g. "/path/to/.git/config" has
core.worktree set to "/different/path"), which is most likely a
misconfiguration. Running git commands in "/path/to" directory will
still use "/different/path" as the root of the work tree and can cause
great confusion to the users.
core.logAllRefUpdates:: core.logAllRefUpdates::
Enable the reflog. Updates to a ref <ref> is logged to the file Enable the reflog. Updates to a ref <ref> is logged to the file
@ -362,19 +429,32 @@ You probably do not need to adjust this value.
+ +
Common unit suffixes of 'k', 'm', or 'g' are supported. Common unit suffixes of 'k', 'm', or 'g' are supported.
core.bigFileThreshold::
Files larger than this size are stored deflated, without
attempting delta compression. Storing large files without
delta compression avoids excessive memory usage, at the
slight expense of increased disk usage.
+
Default is 512 MiB on all platforms. This should be reasonable
for most projects as source code and other text files can still
be delta compressed, but larger binary media files won't be.
+
Common unit suffixes of 'k', 'm', or 'g' are supported.
+
Currently only linkgit:git-fast-import[1] honors this setting.
core.excludesfile:: core.excludesfile::
In addition to '.gitignore' (per-directory) and In addition to '.gitignore' (per-directory) and
'.git/info/exclude', git looks into this file for patterns '.git/info/exclude', git looks into this file for patterns
of files which are not meant to be tracked. See of files which are not meant to be tracked. "{tilde}/" is expanded
linkgit:gitignore[5]. to the value of `$HOME` and "{tilde}user/" to the specified user's
home directory. See linkgit:gitignore[5].
core.editor:: core.editor::
Commands such as `commit` and `tag` that lets you edit Commands such as `commit` and `tag` that lets you edit
messages by launching an editor uses the value of this messages by launching an editor uses the value of this
variable when it is set, and the environment variable variable when it is set, and the environment variable
`GIT_EDITOR` is not set. The order of preference is `GIT_EDITOR` is not set. See linkgit:git-var[1].
`GIT_EDITOR` environment, `core.editor`, `VISUAL` and
`EDITOR` environment variables and then finally `vi`.
core.pager:: core.pager::
The command that git will use to paginate output. Can The command that git will use to paginate output. Can
@ -396,18 +476,24 @@ 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`):
+ +
* `trailing-space` treats trailing whitespaces at the end of the line * `blank-at-eol` treats trailing whitespaces at the end of the line
as an error (enabled by default). as an error (enabled by default).
* `space-before-tab` treats a space character that appears immediately * `space-before-tab` treats a space character that appears immediately
before a tab character in the initial indent part of the line as an before a tab character in the initial indent part of the line as an
error (enabled by default). error (enabled by default).
* `indent-with-non-tab` treats a line that is indented with 8 or more * `indent-with-non-tab` treats a line that is indented with 8 or more
space characters as an error (not enabled by default). space characters as an error (not enabled by default).
* `tab-in-indent` treats a tab character in the initial indent part of
the line as an error (not enabled by default).
* `blank-at-eof` treats blank lines added at the end of file as an error
(enabled by default).
* `trailing-space` is a short-hand to cover both `blank-at-eol` and
`blank-at-eof`.
* `cr-at-eol` treats a carriage-return at the end of line as * `cr-at-eol` treats a carriage-return at the end of line as
part of the line terminator, i.e. with it, `trailing-space` part of the line terminator, i.e. with it, `trailing-space`
does not trigger if the character before such a carriage-return does not trigger if the character before such a carriage-return
@ -439,8 +525,21 @@ On some file system/operating system combinations, this is unreliable.
Set this config setting to 'rename' there; However, This will remove the Set this config setting to 'rename' there; However, This will remove the
check that makes sure that existing object files will not get overwritten. check that makes sure that existing object files will not get overwritten.
core.notesRef::
When showing commit messages, also show notes which are stored in
the given ref. The ref must be fully qualified. If the given
ref does not exist, it is not an error but means that no
notes should be printed.
+
This setting defaults to "refs/notes/commits", and it can be overridden by
the 'GIT_NOTES_REF' environment variable. See linkgit:git-notes[1].
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].
@ -461,12 +560,27 @@ it will be treated as a shell command. For example, defining
executed from the top-level directory of a repository, which may executed from the top-level directory of a repository, which may
not necessarily be the current directory. not necessarily be the current directory.
am.keepcr::
If true, git-am will call git-mailsplit for patches in mbox format
with parameter '--keep-cr'. In this case git-mailsplit will
not remove `\r` from lines ending with `\r\n`. Can be overrriden
by giving '--no-keep-cr' from the command line.
See linkgit:git-am[1], linkgit:git-mailsplit[1].
apply.ignorewhitespace::
When set to 'change', tells 'git apply' to ignore changes in
whitespace, in the same way as the '--ignore-space-change'
option.
When set to one of: no, none, never, false tells 'git apply' to
respect all whitespace differences.
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 setup 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`
@ -477,7 +591,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.
@ -492,31 +606,31 @@ 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.
branch.<name>.mergeoptions:: branch.<name>.mergeoptions::
Sets default options for merging into branch <name>. The syntax and Sets default options for merging into branch <name>. The syntax and
supported options are equal to that of linkgit:git-merge[1], but supported options are the same as those of linkgit:git-merge[1], but
option values containing whitespace characters are currently not option values containing whitespace characters are currently not
supported. supported.
@ -571,29 +685,44 @@ color.diff.<slot>::
Use customized color for diff colorization. `<slot>` specifies Use customized color for diff colorization. `<slot>` specifies
which part of the patch to use the specified color, and is one which part of the patch to use the specified color, and is one
of `plain` (context text), `meta` (metainformation), `frag` of `plain` (context text), `meta` (metainformation), `frag`
(hunk header), `old` (removed lines), `new` (added lines), (hunk header), 'func' (function in hunk header), `old` (removed lines),
`commit` (commit headers), or `whitespace` (highlighting `new` (added lines), `commit` (commit headers), or `whitespace`
whitespace errors). The values of these variables may be specified as (highlighting whitespace errors). The values of these variables may be
in color.branch.<slot>. specified as in color.branch.<slot>.
color.decorate.<slot>::
Use customized color for 'git log --decorate' output. `<slot>` is one
of `branch`, `remoteBranch`, `tag`, `stash` or `HEAD` for local
branches, remote tracking branches, tags, stash and HEAD, respectively.
color.grep:: color.grep::
When set to `always`, always highlight matches. When `false` (or When set to `always`, always highlight matches. When `false` (or
`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:: color.grep.<slot>::
The string value of this variable is passed to an external 'grep' Use customized color for grep colorization. `<slot>` specifies which
command as a command line option if match highlighting is turned part of the line to use the specified color, and is one of
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 `context`;;
when a pager is used. non-matching text in context lines (when using `-A`, `-B`, or `-C`)
`filename`;;
color.grep.match:: filename prefix (when not using `-h`)
Use customized color for matches. The value of this variable `function`;;
may be specified as in color.branch.<slot>. It is passed using function name lines (when using `-p`)
the environment variables 'GREP_COLOR' and 'GREP_COLORS' when `linenumber`;;
calling an external 'grep'. line number prefix (when using `-n`)
`match`;;
matching text
`selected`;;
non-matching text in selected lines
`separator`;;
separators between fields on a line (`:`, `-`, and `=`)
and between hunks (`--`)
--
+
The values of these variables may be specified as in color.branch.<slot>.
color.interactive:: color.interactive::
When set to `always`, always use colors for interactive prompts When set to `always`, always use colors for interactive prompts
@ -602,7 +731,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
@ -641,18 +770,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
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
@ -664,24 +800,26 @@ 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';; diff.noprefix::
If set, 'git diff' does not show any source or destination prefix.
`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
@ -756,6 +894,12 @@ format.subjectprefix::
The default for format-patch is to output files with the '[PATCH]' The default for format-patch is to output files with the '[PATCH]'
subject prefix. Use this variable to change that prefix. subject prefix. Use this variable to change that prefix.
format.signature::
The default for format-patch is to output a signature containing
the git version number. Use this variable to change that default.
Set this variable to the empty string ("") to suppress
signature generation.
format.suffix:: format.suffix::
The default for format-patch is to output files with the suffix The default for format-patch is to output files with the suffix
`.patch`. Use this variable to change that suffix (make sure to `.patch`. Use this variable to change that suffix (make sure to
@ -767,9 +911,9 @@ 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
either a boolean value, `shallow` or `deep`. `shallow` a boolean value, or `shallow` or `deep`. `shallow` threading
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
`\--in-reply-to`, and the first patch mail, in this order. `\--in-reply-to`, and the first patch mail, in this order.
`deep` threading makes every mail a reply to the previous one. `deep` threading makes every mail a reply to the previous one.
@ -785,8 +929,8 @@ 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 250.
gc.auto:: gc.auto::
When there are approximately more than this many loose When there are approximately more than this many loose
@ -802,39 +946,42 @@ gc.autopacklimit::
default value is 50. Setting this to 0 disables it. default value is 50. Setting this to 0 disables it.
gc.packrefs:: gc.packrefs::
'git-gc' does not run `git pack-refs` in a bare repository by Running `git pack-refs` in a repository renders it
default so that older dumb-transport clients can still fetch unclonable by Git versions prior to 1.5.1.2 over dumb
from the repository. Setting this to `true` lets 'git-gc' transports such as HTTP. This variable determines whether
to run `git pack-refs`. Setting this to `false` tells 'git gc' runs `git pack-refs`. This can be set to `nobare`
'git-gc' never to run `git pack-refs`. The default setting is to enable it within all non-bare repos or it can be set to a
`notbare`. Enable it only when you know you do not have to boolean value. The default is `true`.
support such clients. The default setting will change to `true`
at some stage, and setting this to `false` will continue to
prevent `git pack-refs` from being run from 'git-gc'.
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 gc.<pattern>.reflogexpire::
this time; defaults to 90 days. 'git reflog expire' removes reflog entries older than
this time; defaults to 90 days. With "<pattern>" (e.g.
"refs/stash") in the middle the setting applies only to
the refs that match the <pattern>.
gc.reflogexpireunreachable:: gc.reflogexpireunreachable::
'git-reflog expire' removes reflog entries older than gc.<ref>.reflogexpireunreachable::
'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. With "<pattern>" (e.g. "refs/stash")
in the middle, the setting applies only to the refs that
match the <pattern>.
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::
@ -850,13 +997,15 @@ gitcvs.logfile::
various stuff. See linkgit:git-cvsserver[1]. various stuff. See linkgit:git-cvsserver[1].
gitcvs.usecrlfattr:: gitcvs.usecrlfattr::
If true, the server will look up the `crlf` attribute for If true, the server will look up the end-of-line conversion
files to determine the '-k' modes to use. If `crlf` is set, attributes for files to determine the '-k' modes to use. If
the '-k' mode will be left blank, so cvs clients will the attributes force git to treat a file as text,
treat it as text. If `crlf` is explicitly unset, the file the '-k' mode will be left blank so cvs clients will
treat it as text. If they suppress text conversion, the file
will be set with '-kb' mode, which suppresses any newline munging will be set with '-kb' mode, which suppresses any newline munging
the client might otherwise do. If `crlf` is not specified, the client might otherwise do. If the attributes do not allow
then 'gitcvs.allbinary' is used. See linkgit:gitattributes[5]. the file type to be determined, then 'gitcvs.allbinary' is
used. See linkgit:gitattributes[5].
gitcvs.allbinary:: gitcvs.allbinary::
This is used if 'gitcvs.usecrlfattr' does not resolve This is used if 'gitcvs.usecrlfattr' does not resolve
@ -942,7 +1091,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.
@ -1066,6 +1215,20 @@ 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::
Maximum size in bytes of the buffer used by smart HTTP
transports when POSTing data to the remote system.
For requests larger than this buffer size, HTTP/1.1 and
Transfer-Encoding: chunked is used to avoid creating a
massive pack file locally. Default is 1 MiB, which is
sufficient for most requests.
http.lowSpeedLimit, http.lowSpeedTime:: http.lowSpeedLimit, http.lowSpeedTime::
If the HTTP transfer speed is less than 'http.lowSpeedLimit' If the HTTP transfer speed is less than 'http.lowSpeedLimit'
for longer than 'http.lowSpeedTime' seconds, the transfer is aborted. for longer than 'http.lowSpeedTime' seconds, the transfer is aborted.
@ -1087,12 +1250,16 @@ 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
in linkgit:git-imap-send[1]. in linkgit:git-imap-send[1].
init.templatedir::
Specify the directory from which templates will be copied.
(See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)
instaweb.browser:: instaweb.browser::
Specify the program that will be used to browse your working Specify the program that will be used to browse your working
repository in gitweb. See linkgit:git-instaweb[1]. repository in gitweb. See linkgit:git-instaweb[1].
@ -1121,10 +1288,17 @@ 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].
log.decorate::
Print out the ref names of any commits that are shown by the log
command. If 'short' is specified, the ref name prefixes 'refs/heads/',
'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is
specified, the full ref name (including prefix) will be printed.
This is the same as the log commands '--decorate' option.
log.showroot:: log.showroot::
If true, the initial commit will be shown as a big creation event. If true, the initial commit will be shown as a big creation event.
This is equivalent to a diff against an empty tree. This is equivalent to a diff against an empty tree.
@ -1193,6 +1367,53 @@ mergetool.keepTemporaries::
mergetool.prompt:: mergetool.prompt::
Prompt before each invocation of the merge resolution program. Prompt before each invocation of the merge resolution program.
notes.displayRef::
The (fully qualified) refname from which to show notes when
showing commit messages. The value of this variable can be set
to a glob, in which case notes from all matching refs will be
shown. You may also specify this configuration variable
several times. A warning will be issued for refs that do not
exist, but a glob that does not match any refs is silently
ignored.
+
This setting can be overridden with the `GIT_NOTES_DISPLAY_REF`
environment variable, which must be a colon separated list of refs or
globs.
+
The effective value of "core.notesRef" (possibly overridden by
GIT_NOTES_REF) is also implicitly added to the list of refs to be
displayed.
notes.rewrite.<command>::
When rewriting commits with <command> (currently `amend` or
`rebase`) and this variable is set to `true`, git
automatically copies your notes from the original to the
rewritten commit. Defaults to `true`, but see
"notes.rewriteRef" below.
notes.rewriteMode::
When copying notes during a rewrite (see the
"notes.rewrite.<command>" option), determines what to do if
the target commit already has a note. Must be one of
`overwrite`, `concatenate`, or `ignore`. Defaults to
`concatenate`.
+
This setting can be overridden with the `GIT_NOTES_REWRITE_MODE`
environment variable.
notes.rewriteRef::
When copying notes during a rewrite, specifies the (fully
qualified) ref whose notes should be copied. The ref may be a
glob, in which case notes in all matching refs will be copied.
You may also specify this configuration several times.
+
Does not have a default value; you must configure this variable to
enable note rewriting.
+
This setting can be overridden with the `GIT_NOTES_REWRITE_REF`
environment variable, which must be a colon separated list of refs or
globs.
pack.window:: pack.window::
The size of the window used by linkgit:git-pack-objects[1] when no The size of the window used by linkgit:git-pack-objects[1] when no
window size is given on the command line. Defaults to 10. window size is given on the command line. Defaults to 10.
@ -1261,10 +1482,13 @@ you can use linkgit:git-index-pack[1] on the *.pack file to regenerate
the `{asterisk}.idx` file. the `{asterisk}.idx` file.
pack.packSizeLimit:: pack.packSizeLimit::
The default maximum size of a pack. This setting only affects The maximum size of a pack. This setting only affects
packing to a file, i.e. the git:// protocol is unaffected. It packing to a file when repacking, i.e. the git:// protocol
can be overridden by the `\--max-pack-size` option of is unaffected. It can be overridden by the `\--max-pack-size`
linkgit:git-repack[1]. option of linkgit:git-repack[1]. The minimum size allowed is
limited to 1 MiB. The default is unlimited.
Common unit suffixes of 'k', 'm', or 'g' are
supported.
pager.<cmd>:: pager.<cmd>::
Allows turning on or off pagination of the output of a Allows turning on or off pagination of the output of a
@ -1273,6 +1497,16 @@ pager.<cmd>::
it takes precedence over this option. To disable pagination for it takes precedence over this option. To disable pagination for
all commands, set `core.pager` or `GIT_PAGER` to `cat`. all commands, set `core.pager` or `GIT_PAGER` to `cat`.
pretty.<name>::
Alias for a --pretty= format string, as specified in
linkgit:git-log[1]. Any aliases defined here can be used just
as the built-in pretty formats could. For example,
running `git config pretty.changelog "format:{asterisk} %H %s"`
would cause the invocation `git log --pretty=changelog`
to be equivalent to running `git log "--pretty=format:{asterisk} %H %s"`.
Note that an alias with the same name as a built-in format
will be silently ignored.
pull.octopus:: pull.octopus::
The default merge strategy to use when pulling multiple branches The default merge strategy to use when pulling multiple branches
at once. at once.
@ -1297,6 +1531,11 @@ rebase.stat::
Whether to show a diffstat of what changed upstream since the last Whether to show a diffstat of what changed upstream since the last
rebase. False by default. rebase. False by default.
receive.autogc::
By default, git-receive-pack will run "git-gc --auto" after
receiving data from git-push and updating refs. You can stop
it by setting this variable to false.
receive.fsckObjects:: receive.fsckObjects::
If it is set to true, git-receive-pack will check all received If it is set to true, git-receive-pack will check all received
objects. It will abort in the case of a malformed object or a objects. It will abort in the case of a malformed object or a
@ -1318,20 +1557,24 @@ receive.denyDeletes::
the ref. Use this to prevent such a ref deletion via a push. the ref. Use this to prevent such a ref deletion via a push.
receive.denyCurrentBranch:: receive.denyCurrentBranch::
If set to true or "refuse", receive-pack will deny a ref update If set to true or "refuse", git-receive-pack will deny a ref update
to the currently checked out branch of a non-bare repository. to the currently checked out branch of a non-bare repository.
Such a push is potentially dangerous because it brings the HEAD Such a push is potentially dangerous because it brings the HEAD
out of sync with the index and working tree. If set to "warn", out of sync with the index and working tree. If set to "warn",
print a warning of such a push to stderr, but allow the push to print a warning of such a push to stderr, but allow the push to
proceed. If set to false or "ignore", allow such pushes with no proceed. If set to false or "ignore", allow such pushes with no
message. Defaults to "warn". message. Defaults to "refuse".
receive.denyNonFastForwards:: receive.denyNonFastForwards::
If set to true, git-receive-pack will deny a ref update which is If set to true, git-receive-pack will deny a ref update which is
not a fast forward. Use this to prevent such an update via a push, not a fast-forward. Use this to prevent such an update via a push,
even if that push is forced. This configuration variable is even if that push is forced. This configuration variable is
set when initializing a shared repository. set when initializing a shared repository.
receive.updateserverinfo::
If set to true, git-receive-pack will run git-update-server-info
after receiving data from git-push and updating refs.
remote.<name>.url:: remote.<name>.url::
The URL of a remote repository. See linkgit:git-fetch[1] or The URL of a remote repository. See linkgit:git-fetch[1] or
linkgit:git-push[1]. linkgit:git-push[1].
@ -1358,7 +1601,13 @@ remote.<name>.mirror::
remote.<name>.skipDefaultUpdate:: remote.<name>.skipDefaultUpdate::
If true, this remote will be skipped by default when updating If true, this remote will be skipped by default when updating
using the update subcommand of linkgit:git-remote[1]. using linkgit:git-fetch[1] or the `update` subcommand of
linkgit:git-remote[1].
remote.<name>.skipFetchAll::
If true, this remote will be skipped by default when updating
using linkgit:git-fetch[1] or the `update` subcommand of
linkgit:git-remote[1].
remote.<name>.receivepack:: remote.<name>.receivepack::
The default program to execute on the remote side when pushing. See The default program to execute on the remote side when pushing. See
@ -1370,7 +1619,13 @@ remote.<name>.uploadpack::
remote.<name>.tagopt:: 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>. Setting it to \--tags will fetch every
tag from remote <name>, even if they are not reachable from remote
branch heads.
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
@ -1430,6 +1685,7 @@ sendemail.smtppass::
sendemail.suppresscc:: sendemail.suppresscc::
sendemail.suppressfrom:: sendemail.suppressfrom::
sendemail.to:: sendemail.to::
sendemail.smtpdomain::
sendemail.smtpserver:: sendemail.smtpserver::
sendemail.smtpserverport:: sendemail.smtpserverport::
sendemail.smtpuser:: sendemail.smtpuser::
@ -1469,6 +1725,13 @@ If this variable is not specified, it defaults to 'normal'.
This variable can be overridden with the -u|--untracked-files option This variable can be overridden with the -u|--untracked-files option
of linkgit:git-status[1] and linkgit:git-commit[1]. of linkgit:git-status[1] and linkgit:git-commit[1].
status.submodulesummary::
Defaults to false.
If this is set to a non zero number or true (identical to -1 or an
unlimited number), the submodule summary will be enabled and a
summary of commits for modified submodules will be shown (see
--summary-limit option of linkgit:git-submodule[1]).
tar.umask:: tar.umask::
This variable can be used to restrict the permission bits of This variable can be used to restrict the permission bits of
tar archive entries. The default is 0002, which turns off the tar archive entries. The default is 0002, which turns off the
@ -1492,6 +1755,19 @@ url.<base>.insteadOf::
never-before-seen repository on the site. When more than one never-before-seen repository on the site. When more than one
insteadOf strings match a given URL, the longest match is used. insteadOf strings match a given URL, the longest match is used.
url.<base>.pushInsteadOf::
Any URL that starts with this value will not be pushed to;
instead, it will be rewritten to start with <base>, and the
resulting URL will be pushed to. In cases where some site serves
a large number of repositories, and serves them with multiple
access methods, some of which do not allow push, this feature
allows people to specify a pull-only URL and have git
automatically use an appropriate URL to push, even for a
never-before-seen repository on the site. When more than one
pushInsteadOf strings match a given URL, the longest match is
used. If a remote has an explicit pushurl, git will ignore this
setting for that remote.
user.email:: user.email::
Your email address to be recorded in any newly created commits. Your email address to be recorded in any newly created commits.
Can be overridden by the 'GIT_AUTHOR_EMAIL', 'GIT_COMMITTER_EMAIL', and Can be overridden by the 'GIT_AUTHOR_EMAIL', 'GIT_COMMITTER_EMAIL', and

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 @@ git-diff-tree [-r] <tree-ish-1> <tree-ish-2> [<pattern>...]::
git-diff-files [<pattern>...]:: git-diff-files [<pattern>...]::
compares the index and the files on the filesystem. compares the index and the files on the filesystem.
The "git-diff-tree" command begins its ouput by printing the hash of The "git-diff-tree" command begins its output by printing the hash of
what is being compared. After that, all the commands print one output what is being compared. After that, all the commands print one output
line per changed file. line per changed file.

View file

@ -56,7 +56,8 @@ combined diff format
"git-diff-tree", "git-diff-files" and "git-diff" can take '-c' or "git-diff-tree", "git-diff-files" and "git-diff" can take '-c' or
'--cc' option to produce 'combined diff'. For showing a merge commit '--cc' option to produce 'combined diff'. For showing a merge commit
with "git log -p", this is the default format. with "git log -p", this is the default format; you can force showing
full diff with the '-m' option.
A 'combined diff' format looks like this: A 'combined diff' format looks like this:
------------ ------------

View file

@ -14,12 +14,14 @@ endif::git-format-patch[]
ifdef::git-format-patch[] ifdef::git-format-patch[]
-p:: -p::
Generate patches without diffstat. --no-stat::
Generate plain patches without any diffstats.
endif::git-format-patch[] endif::git-format-patch[]
ifndef::git-format-patch[] ifndef::git-format-patch[]
-p:: -p::
-u:: -u::
--patch::
Generate patch (see section on generating patches). Generate patch (see section on generating patches).
{git-diff? This is the default.} {git-diff? This is the default.}
endif::git-format-patch[] endif::git-format-patch[]
@ -27,33 +29,40 @@ endif::git-format-patch[]
-U<n>:: -U<n>::
--unified=<n>:: --unified=<n>::
Generate diffs with <n> lines of context instead of Generate diffs with <n> lines of context instead of
the usual three. Implies "-p". the usual three.
ifndef::git-format-patch[]
Implies `-p`.
endif::git-format-patch[]
ifndef::git-format-patch[]
--raw:: --raw::
Generate the raw format. Generate the raw format.
{git-diff-core? This is the default.} {git-diff-core? This is the default.}
endif::git-format-patch[]
ifndef::git-format-patch[]
--patch-with-raw:: --patch-with-raw::
Synonym for "-p --raw". Synonym for `-p --raw`.
endif::git-format-patch[]
--patience:: --patience::
Generate a diff using the "patience diff" algorithm. Generate a diff using the "patience diff" algorithm.
--stat[=width[,name-width]]:: --stat[=width[,name-width]]::
Generate a diffstat. You can override the default Generate a diffstat. You can override the default
output width for 80-column terminal by "--stat=width". output width for 80-column terminal by `--stat=width`.
The width of the filename part can be controlled by The width of the filename part can be controlled by
giving another width to it separated by a comma. giving another width to it separated by a comma.
--numstat:: --numstat::
Similar to \--stat, but shows number of added and Similar to `\--stat`, but shows number of added and
deleted lines in decimal notation and pathname without deleted lines in decimal notation and pathname without
abbreviation, to make it more machine friendly. For abbreviation, to make it more machine friendly. For
binary files, outputs two `-` instead of saying binary files, outputs two `-` instead of saying
`0 0`. `0 0`.
--shortstat:: --shortstat::
Output only the last line of the --stat format containing total Output only the last line of the `--stat` format containing total
number of modified files, as well as number of added and deleted number of modified files, as well as number of added and deleted
lines. lines.
@ -61,24 +70,39 @@ endif::git-format-patch[]
Output the distribution of relative amount of changes (number of lines added or Output the distribution of relative amount of changes (number of lines added or
removed) for each sub-directory. Directories with changes below removed) for each sub-directory. Directories with changes below
a cut-off percent (3% by default) are not shown. The cut-off percent a cut-off percent (3% by default) are not shown. The cut-off percent
can be set with "--dirstat=limit". Changes in a child directory is not can be set with `--dirstat=limit`. Changes in a child directory is not
counted for the parent directory, unless "--cumulative" is used. counted for the parent directory, unless `--cumulative` is used.
--dirstat-by-file[=limit]:: --dirstat-by-file[=limit]::
Same as --dirstat, but counts changed files instead of lines. Same as `--dirstat`, but counts changed files instead of lines.
--summary:: --summary::
Output a condensed summary of extended header information Output a condensed summary of extended header information
such as creations, renames and mode changes. such as creations, renames and mode changes.
ifndef::git-format-patch[]
--patch-with-stat:: --patch-with-stat::
Synonym for "-p --stat". Synonym for `-p --stat`.
{git-format-patch? This is the default.} endif::git-format-patch[]
ifndef::git-format-patch[]
-z:: -z::
NUL-line termination on output. This affects the --raw ifdef::git-log[]
output field terminator. Also output from commands such Separate the commits with NULs instead of with new newlines.
as "git-log" will be delimited with NUL between commits. +
Also, when `--raw` or `--numstat` has been given, do not munge
pathnames and use NULs as output field terminators.
endif::git-log[]
ifndef::git-log[]
When `--raw`, `--numstat`, `--name-only` or `--name-status` has been
given, do not munge pathnames and use NULs as output field terminators.
endif::git-log[]
+
Without this option, each pathname output will have TAB, LF, double quotes,
and backslash characters replaced with `\t`, `\n`, `\"`, and `\\`,
respectively, and the pathname will be enclosed in double quotes if
any of those replacements occurred.
--name-only:: --name-only::
Show only names of changed files. Show only names of changed files.
@ -87,18 +111,55 @@ endif::git-format-patch[]
Show only names and status of changed files. See the description Show only names and status of changed files. See the description
of the `--diff-filter` option on what the status letters mean. of the `--diff-filter` option on what the status letters mean.
--color:: --submodule[=<format>]::
Chose the output format for submodule differences. <format> can be one of
'short' and 'log'. 'short' just shows pairs of commit names, this format
is used when this option is not given. 'log' is the default value for this
option and lists the commits in that commit range like the 'summary'
option of linkgit:git-submodule[1] does.
--color[=<when>]::
Show colored diff. Show colored diff.
The value must be always (the default), never, or auto.
--no-color:: --no-color::
Turn off colored diff, even when the configuration file Turn off colored diff, even when the configuration file
gives the default to color output. gives the default to color output.
Same as `--color=never`.
--color-words[=<regex>]:: --word-diff[=<mode>]::
Show colored word diff, i.e., color words which have changed. Show a word diff, using the <mode> to delimit changed words.
By default, words are separated by whitespace. By default, words are delimited by whitespace; see
`--word-diff-regex` below. The <mode> defaults to 'plain', and
must be one of:
+ +
When a <regex> is specified, every non-overlapping match of the --
color::
Highlight changed words using only colors. Implies `--color`.
plain::
Show words as `[-removed-]` and `{+added+}`. Makes no
attempts to escape the delimiters if they appear in the input,
so the output may be ambiguous.
porcelain::
Use a special line-based format intended for script
consumption. Added/removed/unchanged runs are printed in the
usual unified diff format, starting with a `+`/`-`/` `
character at the beginning of the line and extending to the
end of the line. Newlines in the input are represented by a
tilde `~` on a line of its own.
none::
Disable word diff again.
--
+
Note that despite the name of the first mode, color is used to
highlight the changed parts in all modes if enabled.
--word-diff-regex=<regex>::
Use <regex> to decide what a word is, instead of considering
runs of non-whitespace to be a word. Also implies
`--word-diff` unless it was already enabled.
+
Every non-overlapping match of the
<regex> is considered a word. Anything between these matches is <regex> is considered a word. Anything between these matches is
considered whitespace and ignored(!) for the purposes of finding considered whitespace and ignored(!) for the purposes of finding
differences. You may want to append `|[^[:space:]]` to your regular differences. You may want to append `|[^[:space:]]` to your regular
@ -111,15 +172,22 @@ linkgit:gitattributes[1] or linkgit:git-config[1]. Giving it explicitly
overrides any diff driver or configuration setting. Diff drivers overrides any diff driver or configuration setting. Diff drivers
override configuration settings. override configuration settings.
--color-words[=<regex>]::
Equivalent to `--word-diff=color` plus (if a regex was
specified) `--word-diff-regex=<regex>`.
endif::git-format-patch[]
--no-renames:: --no-renames::
Turn off rename detection, even when the configuration Turn off rename detection, even when the configuration
file gives the default to do so. file gives the default to do so.
ifndef::git-format-patch[]
--check:: --check::
Warn if changes introduce trailing whitespace Warn if changes introduce trailing whitespace
or an indent that uses a space before a tab. Exits with or an indent that uses a space before a tab. Exits with
non-zero status if problems are found. Not compatible with non-zero status if problems are found. Not compatible with
--exit-code. --exit-code.
endif::git-format-patch[]
--full-index:: --full-index::
Instead of the first handful of characters, show the full Instead of the first handful of characters, show the full
@ -127,26 +195,34 @@ override configuration settings.
line when generating patch format output. line when generating patch format output.
--binary:: --binary::
In addition to --full-index, output "binary diff" that In addition to `--full-index`, output a binary diff that
can be applied with "git apply". can be applied with `git-apply`.
--abbrev[=<n>]:: --abbrev[=<n>]::
Instead of showing the full 40-byte hexadecimal object Instead of showing the full 40-byte hexadecimal object
name in diff-raw format output and diff-tree header name in diff-raw format output and diff-tree header
lines, show only a partial prefix. This is lines, show only a partial prefix. This is
independent of --full-index option above, which controls independent of the `--full-index` option above, which controls
the diff-patch output format. Non default number of the diff-patch output format. Non default number of
digits can be specified with --abbrev=<n>. digits can be specified with `--abbrev=<n>`.
-B:: -B::
Break complete rewrite changes into pairs of delete and create. Break complete rewrite changes into pairs of delete and create.
-M:: -M::
ifndef::git-log[]
Detect renames. Detect renames.
endif::git-log[]
ifdef::git-log[]
If generating diffs, detect and report renames for each commit.
For following files across renames while traversing history, see
`--follow`.
endif::git-log[]
-C:: -C::
Detect copies as well as renames. See also `--find-copies-harder`. Detect copies as well as renames. See also `--find-copies-harder`.
ifndef::git-format-patch[]
--diff-filter=[ACDMRTUXB*]:: --diff-filter=[ACDMRTUXB*]::
Select only files that are Added (`A`), Copied (`C`), Select only files that are Added (`A`), Copied (`C`),
Deleted (`D`), Modified (`M`), Renamed (`R`), have their Deleted (`D`), Modified (`M`), Renamed (`R`), have their
@ -158,6 +234,7 @@ override configuration settings.
paths are selected if there is any file that matches paths are selected if there is any file that matches
other criteria in the comparison; if there is no file other criteria in the comparison; if there is no file
that matches other criteria, nothing is selected. that matches other criteria, nothing is selected.
endif::git-format-patch[]
--find-copies-harder:: --find-copies-harder::
For performance reasons, by default, `-C` option finds copies only For performance reasons, by default, `-C` option finds copies only
@ -169,12 +246,13 @@ override configuration settings.
`-C` option has the same effect. `-C` option has the same effect.
-l<num>:: -l<num>::
-M and -C options require O(n^2) processing time where n The `-M` and `-C` options require O(n^2) processing time where n
is the number of potential rename/copy targets. This is the number of potential rename/copy targets. This
option prevents rename/copy detection from running if option prevents rename/copy detection from running if
the number of rename/copy targets exceeds the specified the number of rename/copy targets exceeds the specified
number. number.
ifndef::git-format-patch[]
-S<string>:: -S<string>::
Look for differences that introduce or remove an instance of Look for differences that introduce or remove an instance of
<string>. Note that this is different than the string simply <string>. Note that this is different than the string simply
@ -182,18 +260,20 @@ override configuration settings.
linkgit:gitdiffcore[7] for more details. linkgit:gitdiffcore[7] for more details.
--pickaxe-all:: --pickaxe-all::
When -S finds a change, show all the changes in that When `-S` finds a change, show all the changes in that
changeset, not just the files that contain the change changeset, not just the files that contain the change
in <string>. in <string>.
--pickaxe-regex:: --pickaxe-regex::
Make the <string> not a plain string but an extended POSIX Make the <string> not a plain string but an extended POSIX
regex to match. regex to match.
endif::git-format-patch[]
-O<orderfile>:: -O<orderfile>::
Output the patch in the order specified in the Output the patch in the order specified in the
<orderfile>, which has one shell glob pattern per line. <orderfile>, which has one shell glob pattern per line.
ifndef::git-format-patch[]
-R:: -R::
Swap two inputs; that is, show differences from index or Swap two inputs; that is, show differences from index or
on-disk file to tree contents. on-disk file to tree contents.
@ -205,6 +285,7 @@ override configuration settings.
not in a subdirectory (e.g. in a bare repository), you not in a subdirectory (e.g. in a bare repository), you
can name which subdirectory to make the output relative can name which subdirectory to make the output relative
to by giving a <path> as an argument. to by giving a <path> as an argument.
endif::git-format-patch[]
-a:: -a::
--text:: --text::
@ -229,13 +310,15 @@ override configuration settings.
Show the context between diff hunks, up to the specified number Show the context between diff hunks, up to the specified number
of lines, thereby fusing hunks that are close to each other. of lines, thereby fusing hunks that are close to each other.
ifndef::git-format-patch[]
--exit-code:: --exit-code::
Make the program exit with codes similar to diff(1). Make the program exit with codes similar to diff(1).
That is, it exits with 1 if there were differences and That is, it exits with 1 if there were differences and
0 means no differences. 0 means no differences.
--quiet:: --quiet::
Disable all output of the program. Implies --exit-code. Disable all output of the program. Implies `--exit-code`.
endif::git-format-patch[]
--ext-diff:: --ext-diff::
Allow an external diff helper to be executed. If you set an Allow an external diff helper to be executed. If you set an
@ -245,8 +328,14 @@ override configuration settings.
--no-ext-diff:: --no-ext-diff::
Disallow external diff drivers. Disallow external diff drivers.
--ignore-submodules:: --ignore-submodules[=<when>]::
Ignore changes to submodules in the diff generation. Ignore changes to submodules in the diff generation. <when> can be
either "untracked", "dirty" or "all", which is the default. When
"untracked" is used submodules are not considered dirty when they only
contain untracked content (but they are still scanned for modified
content). Using "dirty" ignores all changes to the work tree of submodules,
only changes to the commits stored in the superproject are shown (this was
the behavior until 1.7.0). Using "all" hides all changes to submodules.
--src-prefix=<prefix>:: --src-prefix=<prefix>::
Show the given source prefix instead of "a/". Show the given source prefix instead of "a/".

View file

@ -1,13 +1,8 @@
Everyday GIT With 20 Commands Or So Everyday GIT With 20 Commands Or So
=================================== ===================================
<<Basic Repository>> commands are needed by people who have a <<Individual Developer (Standalone)>> commands are essential for
repository --- that is everybody, because every working tree of anybody who makes a commit, even for somebody who works alone.
git is a repository.
In addition, <<Individual Developer (Standalone)>> commands are
essential for anybody who makes a commit, even for somebody who
works alone.
If you work with other people, you will need commands listed in If you work with other people, you will need commands listed in
the <<Individual Developer (Participant)>> section as well. the <<Individual Developer (Participant)>> section as well.
@ -20,46 +15,6 @@ administrators who are responsible for the care and feeding
of git repositories. of git repositories.
Basic Repository[[Basic Repository]]
------------------------------------
Everybody uses these commands to maintain git repositories.
* linkgit:git-init[1] or linkgit:git-clone[1] to create a
new repository.
* linkgit:git-fsck[1] to check the repository for errors.
* linkgit:git-gc[1] to do common housekeeping tasks such as
repack and prune.
Examples
~~~~~~~~
Check health and remove cruft.::
+
------------
$ git fsck <1>
$ git count-objects <2>
$ git gc <3>
------------
+
<1> running without `\--full` is usually cheap and assures the
repository health reasonably well.
<2> check how many loose objects there are and how much
disk space is wasted by not repacking.
<3> repacks the local repository and performs other housekeeping tasks.
Repack a small project into single pack.::
+
------------
$ git gc <1>
------------
+
<1> pack all the objects reachable from the refs into one pack,
then remove the other packs.
Individual Developer (Standalone)[[Individual Developer (Standalone)]] Individual Developer (Standalone)[[Individual Developer (Standalone)]]
---------------------------------------------------------------------- ----------------------------------------------------------------------
@ -67,6 +22,8 @@ A standalone individual developer does not exchange patches with
other people, and works alone in a single repository, using the other people, and works alone in a single repository, using the
following commands. following commands.
* linkgit:git-init[1] to create a new repository.
* linkgit:git-show-branch[1] to see where you are. * linkgit:git-show-branch[1] to see where you are.
* linkgit:git-log[1] to see what happened. * linkgit:git-log[1] to see what happened.

View file

@ -1,13 +1,5 @@
ifndef::git-pull[] --all::
-q:: Fetch all remotes.
--quiet::
Pass --quiet to git-fetch-pack and silence any other internally
used git commands.
-v::
--verbose::
Be verbose.
endif::git-pull[]
-a:: -a::
--append:: --append::
@ -15,20 +7,38 @@ endif::git-pull[]
existing contents of `.git/FETCH_HEAD`. Without this existing contents of `.git/FETCH_HEAD`. Without this
option old data in `.git/FETCH_HEAD` will be overwritten. option old data in `.git/FETCH_HEAD` will be overwritten.
--upload-pack <upload-pack>:: --depth=<depth>::
When given, and the repository to fetch from is handled Deepen the history of a 'shallow' repository created by
by 'git-fetch-pack', '--exec=<upload-pack>' is passed to `git clone` with `--depth=<depth>` option (see linkgit:git-clone[1])
the command to specify non-default path for the command by the specified number of commits.
run on the other end.
ifndef::git-pull[]
--dry-run::
Show what would be done, without making any changes.
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
overrides that check. overrides that check.
-k::
--keep::
Keep downloaded pack.
ifndef::git-pull[]
--multiple::
Allow several <repository> and <group> arguments to be
specified. No <refspec>s may be specified.
--prune::
After fetching, remove any remote tracking branches which
no longer exist on the remote.
endif::git-pull[]
ifdef::git-pull[] ifdef::git-pull[]
--no-tags:: --no-tags::
endif::git-pull[] endif::git-pull[]
@ -49,20 +59,35 @@ endif::git-pull[]
flag lets all tags and their associated objects be flag lets all tags and their associated objects be
downloaded. downloaded.
-k::
--keep::
Keep downloaded pack.
-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.
--depth=<depth>:: --upload-pack <upload-pack>::
Deepen the history of a 'shallow' repository created by When given, and the repository to fetch from is handled
`git clone` with `--depth=<depth>` option (see linkgit:git-clone[1]) by 'git fetch-pack', '--exec=<upload-pack>' is passed to
by the specified number of commits. the command to specify non-default path for the command
run on the other end.
ifndef::git-pull[]
-q::
--quiet::
Pass --quiet to git-fetch-pack and silence any other internally
used git commands. Progress is not reported to the standard error
stream.
-v::
--verbose::
Be verbose.
endif::git-pull[]
--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.

View file

@ -14,28 +14,32 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
----------- -----------
This command adds the current content of new or modified files to the This command updates the index using the current content found in
index, thus staging that content for inclusion in the next commit. the working tree, to prepare the content staged for the next commit.
It typically adds the current content of existing paths as a whole,
but with some options it can also be used to add content with
only part of the changes made to the working tree files applied, or
remove paths that do not exist in the working tree anymore.
The "index" holds a snapshot of the content of the working tree, and it The "index" holds a snapshot of the content of the working tree, and it
is this snapshot that is taken as the contents of the next commit. Thus is this snapshot that is taken as the contents of the next commit. Thus
after making any changes to the working directory, and before running after making any changes to the working directory, and before running
the commit command, you must use the 'add' command to add any new or the commit command, you must use the `add` command to add any new or
modified files to the index. modified files to the index.
This command can be performed multiple times before a commit. It only This command can be performed multiple times before a commit. It only
adds the content of the specified file(s) at the time the add command is adds the content of the specified file(s) at the time the add command is
run; if you want subsequent changes included in the next commit, then run; if you want subsequent changes included in the next commit, then
you must run 'git add' again to add the new content to the index. you must run `git add` again to add the new content to the index.
The 'git status' command can be used to obtain a summary of which The `git status` command can be used to obtain a summary of which
files have changes that are staged for the next commit. files have changes that are staged for the next commit.
The 'git add' command will not add ignored files by default. If any 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
@ -72,9 +76,14 @@ OPTIONS
-p:: -p::
--patch:: --patch::
Similar to Interactive mode but the initial command loop is Interactively choose hunks of patch between the index and the
bypassed and the 'patch' subcommand is invoked using each of work tree and add them to the index. This gives the user a chance
the specified filepatterns before exiting. to review the difference before adding modified contents to the
index.
+
This effectively runs `add --interactive`, but bypasses the
initial command menu and directly jumps to the `patch` subcommand.
See ``Interactive mode'' for details.
-e, \--edit:: -e, \--edit::
Open the diff vs. the index in an editor and let the user Open the diff vs. the index in an editor and let the user
@ -87,28 +96,31 @@ apply.
-u:: -u::
--update:: --update::
Update only files that git already knows about, staging modified Only match <filepattern> against already tracked files in
content for commit and marking deleted files for removal. This the index rather than the working tree. That means that it
is similar will never stage new files, but that it will stage modified
to what "git commit -a" does in preparation for making a commit, new contents of tracked files and that it will remove files
except that the update is limited to paths specified on the from the index if the corresponding files in the working tree
command line. If no paths are specified, all tracked files in the have been removed.
current directory and its subdirectories are updated. +
If no <filepattern> is given, default to "."; in other words,
update all tracked files in the current directory and its
subdirectories.
-A:: -A::
--all:: --all::
Update files that git already knows about (same as '\--update') Like `-u`, but match <filepattern> against files in the
and add all untracked files that are not ignored by '.gitignore' working tree in addition to the index. That means that it
mechanism. will find new files as well as staging modified content and
removing files that are no longer in the working tree.
-N:: -N::
--intent-to-add:: --intent-to-add::
Record only the fact that the path will be added later. An entry Record only the fact that the path will be added later. An entry
for the path is placed in the index with no content. This is for the path is placed in the index with no content. This is
useful for, among other things, showing the unstaged content of useful for, among other things, showing the unstaged content of
such files with 'git diff' and committing them with 'git commit such files with `git diff` and committing them with `git commit
-a'. -a`.
--refresh:: --refresh::
Don't add the file(s), but only refresh their stat() Don't add the file(s), but only refresh their stat()
@ -128,7 +140,7 @@ apply.
Configuration Configuration
------------- -------------
The optional configuration variable 'core.excludesfile' indicates a path to a The optional configuration variable `core.excludesfile` indicates a path to a
file containing patterns of file names to exclude from git-add, similar to file containing patterns of file names to exclude from git-add, similar to
$GIT_DIR/info/exclude. Patterns in the exclude file are used in addition to $GIT_DIR/info/exclude. Patterns in the exclude file are used in addition to
those in info/exclude. See linkgit:gitrepository-layout[5]. those in info/exclude. See linkgit:gitrepository-layout[5].
@ -141,7 +153,7 @@ EXAMPLES
and its subdirectories: and its subdirectories:
+ +
------------ ------------
$ git add Documentation/\\*.txt $ git add Documentation/\*.txt
------------ ------------
+ +
Note that the asterisk `\*` is quoted from the shell in this Note that the asterisk `\*` is quoted from the shell in this
@ -176,7 +188,7 @@ and type return, like this:
What now> 1 What now> 1
------------ ------------
You also could say "s" or "sta" or "status" above as long as the You also could say `s` or `sta` or `status` above as long as the
choice is unique. choice is unique.
The main command loop has 6 subcommands (plus help and quit). The main command loop has 6 subcommands (plus help and quit).
@ -184,9 +196,9 @@ The main command loop has 6 subcommands (plus help and quit).
status:: status::
This shows the change between HEAD and index (i.e. what will be This shows the change between HEAD and index (i.e. what will be
committed if you say "git commit"), and between index and committed if you say `git commit`), and between index and
working tree files (i.e. what you could stage further before working tree files (i.e. what you could stage further before
"git commit" using "git-add") for each path. A sample output `git commit` using `git add`) for each path. A sample output
looks like this: looks like this:
+ +
------------ ------------
@ -254,9 +266,9 @@ patch::
y - stage this hunk y - stage this hunk
n - do not stage this hunk n - do not stage this hunk
q - quit, do not stage this hunk nor any of the remaining ones q - quit; do not stage this hunk nor any of the remaining ones
a - stage this and all the remaining hunks in the file a - stage this hunk and all later hunks in the file
d - do not stage this hunk nor any of the remaining hunks in the file d - do not stage this hunk nor any of the later hunks in the file
g - select a hunk to go to g - select a hunk to go to
/ - search for a hunk matching the given regex / - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk j - leave this hunk undecided, see next undecided hunk

View file

@ -9,13 +9,13 @@ git-am - Apply a series of patches from a mailbox
SYNOPSIS SYNOPSIS
-------- --------
[verse] [verse]
'git am' [--signoff] [--keep] [--utf8 | --no-utf8] 'git am' [--signoff] [--keep] [--keep-cr | --no-keep-cr] [--utf8 | --no-utf8]
[--3way] [--interactive] [--committer-date-is-author-date] [--3way] [--interactive] [--committer-date-is-author-date]
[--ignore-date] [--ignore-date] [--ignore-space-change | --ignore-whitespace]
[--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>] [--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>]
[--reject] [-q | --quiet] [--reject] [-q | --quiet] [--scissors | --no-scissors]
[<mbox> | <Maildir>...] [<mbox> | <Maildir>...]
'git am' (--skip | --resolved | --abort) 'git am' (--continue | --skip | --abort)
DESCRIPTION DESCRIPTION
----------- -----------
@ -37,7 +37,22 @@ 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]).
--keep-cr::
--no-keep-cr::
With `--keep-cr`, call 'git mailsplit' (see linkgit:git-mailsplit[1])
with the same option, to prevent it from stripping CR at the end of
lines. `am.keepcr` configuration variable can be used to specify the
default behaviour. `--no-keep-cr` is useful to override `am.keepcr`.
-c::
--scissors::
Remove everything in body before a scissors line (see
linkgit:git-mailinfo[1]).
--no-scissors::
Ignore scissors lines (see linkgit:git-mailinfo[1]).
-q:: -q::
--quiet:: --quiet::
@ -45,7 +60,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
@ -55,7 +70,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::
@ -65,12 +80,15 @@ default. You can use `--no-utf8` to override this.
it is supposed to apply to and we have those blobs it is supposed to apply to and we have those blobs
available locally. available locally.
--ignore-date::
--ignore-space-change::
--ignore-whitespace::
--whitespace=<option>:: --whitespace=<option>::
-C<n>:: -C<n>::
-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.
@ -96,6 +114,7 @@ default. You can use `--no-utf8` to override this.
Skip the current patch. This is only meaningful when Skip the current patch. This is only meaningful when
restarting an aborted patch. restarting an aborted patch.
--continue::
-r:: -r::
--resolved:: --resolved::
After a patch failure (e.g. attempting to apply After a patch failure (e.g. attempting to apply
@ -110,7 +129,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.
@ -125,10 +144,8 @@ the commit, after stripping common prefix "[PATCH <anything>]".
The "Subject: " line is supposed to concisely describe what the The "Subject: " line is supposed to concisely describe what the
commit is about in one line of text. commit is about in one line of text.
"From: " and "Subject: " lines starting the body (the rest of the "From: " and "Subject: " lines starting the body override the respective
message after the blank line terminating the RFC2822 headers) commit author name and title values taken from the headers.
override the respective commit author name and title values taken
from the headers.
The commit message is formed by the title taken from the The commit message is formed by the title taken from the
"Subject: ", a blank line and the body of the message up to "Subject: ", a blank line and the body of the message up to

View file

@ -3,7 +3,7 @@ git-apply(1)
NAME NAME
---- ----
git-apply - Apply a patch on a git index file and/or a working tree git-apply - Apply a patch to files and/or to the index
SYNOPSIS SYNOPSIS
@ -13,14 +13,18 @@ SYNOPSIS
[--apply] [--no-add] [--build-fake-ancestor=<file>] [-R | --reverse] [--apply] [--no-add] [--build-fake-ancestor=<file>] [-R | --reverse]
[--allow-binary-replacement | --binary] [--reject] [-z] [--allow-binary-replacement | --binary] [--reject] [-z]
[-pNUM] [-CNUM] [--inaccurate-eof] [--recount] [--cached] [-pNUM] [-CNUM] [--inaccurate-eof] [--recount] [--cached]
[--ignore-space-change | --ignore-whitespace ]
[--whitespace=<nowarn|warn|fix|error|error-all>] [--whitespace=<nowarn|warn|fix|error|error-all>]
[--exclude=PATH] [--include=PATH] [--directory=<root>] [--exclude=PATH] [--include=PATH] [--directory=<root>]
[--verbose] [<patch>...] [--verbose] [<patch>...]
DESCRIPTION DESCRIPTION
----------- -----------
Reads supplied 'diff' output and applies it on a git index file Reads the supplied diff output (i.e. "a patch") and applies it to files.
and a work tree. With the `--index` option the patch is also applied to the index, and
with the `--cache` option the patch is only applied to the index.
Without these options, the command applies the patch only to files,
and does not require them to be in a git repository.
OPTIONS OPTIONS
------- -------
@ -33,7 +37,7 @@ OPTIONS
input. Turns off "apply". input. Turns off "apply".
--numstat:: --numstat::
Similar to \--stat, but shows the number of added and Similar to `--stat`, but shows the number of added and
deleted lines in decimal notation and the pathname without deleted lines in decimal notation and the pathname without
abbreviation, to make it more machine friendly. For abbreviation, to make it more machine friendly. For
binary files, outputs two `-` instead of saying binary files, outputs two `-` instead of saying
@ -47,25 +51,25 @@ OPTIONS
--check:: --check::
Instead of applying the patch, see if the patch is Instead of applying the patch, see if the patch is
applicable to the current work tree and/or the index applicable to the current working tree and/or the index
file and detects errors. Turns off "apply". file and detects errors. Turns off "apply".
--index:: --index::
When --check is in effect, or when applying the patch When `--check` is in effect, or when applying the patch
(which is the default when none of the options that (which is the default when none of the options that
disables it is in effect), make sure the patch is disables it is in effect), make sure the patch is
applicable to what the current index file records. If applicable to what the current index file records. If
the file to be patched in the work tree is not the file to be patched in the working tree is not
up-to-date, it is flagged as an error. This flag also up-to-date, it is flagged as an error. This flag also
causes the index file to be updated. causes the index file to be updated.
--cached:: --cached::
Apply a patch without touching the working tree. Instead take the Apply a patch without touching the working tree. Instead take the
cached data, apply the patch, and store the result in the index cached data, apply the patch, and store the result in the index
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,
@ -79,18 +83,20 @@ 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
rejected hunks in corresponding *.rej files. rejected hunks in corresponding *.rej files.
-z:: -z::
When showing the index information, do not munge paths, When `--numstat` has been given, do not munge pathnames,
but use NUL terminated machine readable format. Without but use a NUL-terminated machine-readable format.
this flag, the pathnames output will have TAB, LF, and +
backslash characters replaced with `\t`, `\n`, and `\\`, Without this option, each pathname output will have TAB, LF, double quotes,
respectively. and backslash characters replaced with `\t`, `\n`, `\"`, and `\\`,
respectively, and the pathname will be enclosed in double quotes if
any of those replacements occurred.
-p<n>:: -p<n>::
Remove <n> leading slashes from traditional diff paths. The Remove <n> leading slashes from traditional diff paths. The
@ -103,18 +109,18 @@ the information is read from the current index instead.
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
checks use '--unidiff-zero'. checks use `--unidiff-zero`.
+ +
Note, for the reasons stated above usage of context-free patches is Note, for the reasons stated above usage of context-free patches is
discouraged. 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.
@ -143,12 +149,20 @@ discouraged.
be useful when importing patchsets, where you want to include certain be useful when importing patchsets, where you want to include certain
files or directories. files or directories.
+ +
When --exclude and --include patterns are used, they are examined in the When `--exclude` and `--include` patterns are used, they are examined in the
order they appear on the command line, and the first match determines if a order they appear on the command line, and the first match determines if a
patch to each path is used. A patch to a path that does not match any patch to each path is used. A patch to a path that does not match any
include/exclude pattern is used by default if there is no include pattern include/exclude pattern is used by default if there is no include pattern
on the command line, and ignored if there is any include pattern. on the command line, and ignored if there is any include pattern.
--ignore-space-change::
--ignore-whitespace::
When applying a patch, ignore changes in whitespace in context
lines if necessary.
Context lines will preserve their whitespace, and they will not
undergo whitespace fixing regardless of the value of the
`--whitespace` option. New lines will still be fixed, though.
--whitespace=<action>:: --whitespace=<action>::
When applying a patch, detect a new or modified line that has When applying a patch, detect a new or modified line that has
whitespace errors. What are considered whitespace errors is whitespace errors. What are considered whitespace errors is
@ -205,22 +219,26 @@ running `git apply --directory=modules/git-gui`.
Configuration Configuration
------------- -------------
apply.ignorewhitespace::
Set to 'change' if you want changes in whitespace to be ignored by default.
Set to one of: no, none, never, false if you want changes in
whitespace to be significant.
apply.whitespace:: apply.whitespace::
When no `--whitespace` flag is given from the command When no `--whitespace` flag is given from the command
line, this configuration item is used as the default. line, this configuration item is used as the default.
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
commits must match the index exactly for the patch to apply. If any commits must match the index exactly for the patch to apply. If any
of the submodules are checked-out, then these check-outs are completely of the submodules are checked-out, then these check-outs are completely
ignored, i.e., they are not required to be up-to-date or clean and they ignored, i.e., they are not required to be up-to-date or clean and they
are not updated. are not updated.
If --index is not specified, then the submodule commits in the patch If `--index` is not specified, then the submodule commits in the patch
are ignored and only the absence or presence of the corresponding are ignored and only the absence or presence of the corresponding
subdirectory is checked and (if possible) updated. subdirectory is checked and (if possible) updated.

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

@ -10,7 +10,7 @@ SYNOPSIS
-------- --------
[verse] [verse]
'git archive' [--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>] 'git archive' [--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>]
[--output=<file>] [--worktree-attributes] [-o | --output=<file>] [--worktree-attributes]
[--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish> [--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish>
[path...] [path...]
@ -21,21 +21,24 @@ 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
------- -------
--format=<fmt>:: --format=<fmt>::
Format of the resulting archive: 'tar' or 'zip'. The default Format of the resulting archive: 'tar' or 'zip'. If this option
is 'tar'. is not given, and the output file is specified, the format is
inferred from the filename if possible (e.g. writing to "foo.zip"
makes the output to be in the zip format). Otherwise the output
format is `tar`.
-l:: -l::
--list:: --list::
@ -48,6 +51,7 @@ OPTIONS
--prefix=<prefix>/:: --prefix=<prefix>/::
Prepend <prefix>/ to each filename in the archive. Prepend <prefix>/ to each filename in the archive.
-o <file>::
--output=<file>:: --output=<file>::
Write the archive to <file> instead of stdout. Write the archive to <file> instead of stdout.
@ -70,8 +74,9 @@ OPTIONS
The tree or commit to produce an archive for. The tree or commit to produce an archive for.
path:: path::
If one or more paths are specified, include only these in the Without an optional path parameter, all files and subdirectories
archive, otherwise include all files and subdirectories. of the current working directory are included in the archive.
If one or more paths are specified, only these are included.
BACKEND EXTRA OPTIONS BACKEND EXTRA OPTIONS
--------------------- ---------------------
@ -107,6 +112,14 @@ export-subst::
expand several placeholders when adding this file to an archive. expand several placeholders when adding this file to an archive.
See linkgit:gitattributes[5] for details. See linkgit:gitattributes[5] for details.
Note that attributes are by default taken from the `.gitattributes` files
in the tree that is being archived. If you want to tweak the way the
output is generated after the fact (e.g. you committed without adding an
appropriate export-ignore in its `.gitattributes`), adjust the checked out
`.gitattributes` file as necessary and use `--work-tree-attributes`
option. Alternatively you can keep necessary attributes that should apply
while archiving any tree in your `$GIT_DIR/info/attributes` file.
EXAMPLES EXAMPLES
-------- --------
git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -):: git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -)::
@ -129,6 +142,12 @@ git archive --format=zip --prefix=git-docs/ HEAD:Documentation/ > git-1.4.0-docs
Put everything in the current head's Documentation/ directory Put everything in the current head's Documentation/ directory
into 'git-1.4.0-docs.zip', with the prefix 'git-docs/'. into 'git-1.4.0-docs.zip', with the prefix 'git-docs/'.
git archive -o latest.zip HEAD::
Create a Zip archive that contains the contents of the latest
commit on the current branch. Note that the output format is
inferred by the extension of the output file.
SEE ALSO SEE ALSO
-------- --------

File diff suppressed because it is too large Load diff

View file

@ -20,7 +20,7 @@ on the subcommand:
git bisect bad [<rev>] git bisect bad [<rev>]
git bisect good [<rev>...] git bisect good [<rev>...]
git bisect skip [(<rev>|<range>)...] git bisect skip [(<rev>|<range>)...]
git bisect reset [<branch>] git bisect reset [<commit>]
git bisect visualize git bisect visualize
git bisect replay <logfile> git bisect replay <logfile>
git bisect log git bisect log
@ -81,16 +81,27 @@ will have been left with the first bad kernel revision in "refs/bisect/bad".
Bisect reset Bisect reset
~~~~~~~~~~~~ ~~~~~~~~~~~~
To return to the original head after a bisect session, issue the After a bisect session, to clean up the bisection state and return to
following command: the original HEAD, issue the following command:
------------------------------------------------ ------------------------------------------------
$ git bisect reset $ git bisect reset
------------------------------------------------ ------------------------------------------------
This resets the tree to the original branch instead of being on the By default, this will return your tree to the commit that was checked
bisection commit ("git bisect start" will also do that, as it resets out before `git bisect start`. (A new `git bisect start` will also do
the bisection state). that, as it cleans up the old bisection state.)
With an optional argument, you can return to a different commit
instead:
------------------------------------------------
$ git bisect reset <commit>
------------------------------------------------
For example, `git bisect reset HEAD` will leave you on the current
bisection commit and avoid switching commits at all, while `git bisect
reset bisect/bad` will check out the first bad revision.
Bisect visualize Bisect visualize
~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~
@ -319,6 +330,11 @@ Documentation
------------- -------------
Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>. Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
SEE ALSO
--------
link:git-bisect-lk2009.html[Fighting regressions with git bisect],
linkgit:git-blame[1].
GIT GIT
--- ---
Part of the linkgit:git[1] suite Part of the linkgit:git[1] suite

View file

@ -9,7 +9,7 @@ SYNOPSIS
-------- --------
[verse] [verse]
'git blame' [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-p] [-w] [--incremental] [-L n,m] 'git blame' [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-p] [-w] [--incremental] [-L n,m]
[-S <revs-file>] [-M] [-C] [-C] [--since=<date>] [-S <revs-file>] [-M] [-C] [-C] [-C] [--since=<date>]
[<rev> | --contents <file> | --reverse <rev>] [--] <file> [<rev> | --contents <file> | --reverse <rev>] [--] <file>
DESCRIPTION DESCRIPTION
@ -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

@ -8,10 +8,10 @@ git-branch - List, create, or delete branches
SYNOPSIS SYNOPSIS
-------- --------
[verse] [verse]
'git branch' [--color | --no-color] [-r | -a] 'git branch' [--color[=<when>] | --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>...
@ -30,17 +30,15 @@ commit) will be listed. With `--no-merged` only branches not merged into
the named commit will be listed. If the <commit> argument is missing it the named commit will be listed. If the <commit> argument is missing it
defaults to 'HEAD' (i.e. the tip of the current branch). defaults to 'HEAD' (i.e. the tip of the current branch).
In the command's second form, a new branch named <branchname> will be created. The command's second form creates a new branch head named <branchname>
It will start out with a head equal to the one given as <start-point>. which points to the current 'HEAD', or <start-point> if given.
If no <start-point> is given, the branch will be created with a head
equal to that of the currently checked out branch.
Note that this will create the new branch, but it will not switch the Note that this will create the new branch, but it will not switch the
working tree to it; use "git checkout <newbranch>" to switch to the working tree to it; use "git checkout <newbranch>" to switch to the
new branch. new branch.
When a local branch is started off a remote 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.
@ -57,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.
@ -65,7 +63,9 @@ way to clean up all obsolete remote-tracking branches.
OPTIONS OPTIONS
------- -------
-d:: -d::
Delete a branch. The branch must be fully merged in HEAD. Delete a branch. The branch must be fully merged in its
upstream branch, or in `HEAD` if no upstream was set with
`--track` or `--set-upstream`.
-D:: -D::
Delete a branch irrespective of its merged status. Delete a branch irrespective of its merged status.
@ -74,10 +74,13 @@ OPTIONS
Create the branch's reflog. This activates recording of Create the branch's reflog. This activates recording of
all changes made to the branch ref, enabling use of date all changes made to the branch ref, enabling use of date
based sha1 expressions such as "<branchname>@\{yesterday}". based sha1 expressions such as "<branchname>@\{yesterday}".
Note that in non-bare repositories, reflogs are usually
enabled by default by the `core.logallrefupdates` config option.
-f:: -f::
--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.
@ -85,12 +88,14 @@ OPTIONS
-M:: -M::
Move/rename a branch even if the new branch name already exists. Move/rename a branch even if the new branch name already exists.
--color:: --color[=<when>]::
Color branches to highlight current, local, and remote branches. Color branches to highlight current, local, and remote branches.
The value must be always (the default), never, or auto.
--no-color:: --no-color::
Turn off branch colors, even when the configuration file gives the Turn off branch colors, even when the configuration file gives the
default to color output. default to color output.
Same as `--color=never`.
-r:: -r::
List or delete (if used with -d) the remote-tracking branches. List or delete (if used with -d) the remote-tracking branches.
@ -130,14 +135,22 @@ 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.
--merged:: --merged [<commit>]::
Only list branches which are fully contained by HEAD. Only list branches whose tips are reachable from the
specified commit (HEAD if not specified).
--no-merged:: --no-merged [<commit>]::
Do not list branches which are fully contained by HEAD. Only list branches whose tips are not reachable from the
specified commit (HEAD if not specified).
<branchname>:: <branchname>::
The name of the branch to create or delete. The name of the branch to create or delete.
@ -146,9 +159,9 @@ start-point is either a local or remote branch.
may restrict the characters allowed in a branch name. may restrict the characters allowed in a branch name.
<start-point>:: <start-point>::
The new branch will be created with a HEAD equal to this. It may The new branch head will point to this commit. It may be
be given as a branch name, a commit-id, or a tag. If this option given as a branch name, a commit-id, or a tag. If this
is omitted, the current branch is assumed. option is omitted, the current HEAD will be used instead.
<oldbranch>:: <oldbranch>::
The name of an existing branch to rename. The name of an existing branch to rename.
@ -209,6 +222,14 @@ but different purposes:
- `--no-merged` is used to find branches which are candidates for merging - `--no-merged` is used to find branches which are candidates for merging
into HEAD, since those branches are not fully contained by HEAD. into HEAD, since those branches are not fully contained by HEAD.
SEE ALSO
--------
linkgit:git-check-ref-format[1],
linkgit:git-fetch[1],
linkgit:git-remote[1],
link:user-manual.html#what-is-a-branch[``Understanding history: What is
a branch?''] in the Git User's Manual.
Author Author
------ ------
Written by Linus Torvalds <torvalds@osdl.org> and Junio C Hamano <gitster@pobox.com> Written by Linus Torvalds <torvalds@osdl.org> and Junio C Hamano <gitster@pobox.com>

View file

@ -21,10 +21,10 @@ 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 (i.e., 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
bundle assumes that all objects in the basis are already in the bundle assumes that all objects in the basis are already in 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

@ -9,14 +9,15 @@ git-cat-file - Provide content or type and size information for repository objec
SYNOPSIS SYNOPSIS
-------- --------
[verse] [verse]
'git cat-file' (-t | -s | -e | -p | <type>) <object> 'git cat-file' (-t | -s | -e | -p | <type> | --textconv ) <object>
'git cat-file' (--batch | --batch-check) < <list-of-objects> 'git cat-file' (--batch | --batch-check) < <list-of-objects>
DESCRIPTION DESCRIPTION
----------- -----------
In its first form, the command provides the content or the type of an object in In its first form, the command provides the content or the type of an object in
the repository. The type is required unless '-t' or '-p' is used to find the the repository. The type is required unless '-t' or '-p' is used to find the
object type, or '-s' is used to find the object size. object type, or '-s' is used to find the object size, or '--textconv' is used
(which implies type "blob").
In the second form, a list of objects (separated by linefeeds) is provided on In the second form, a list of objects (separated by linefeeds) is provided on
stdin, and the SHA1, type, and size of each object is printed on stdout. stdin, and the SHA1, type, and size of each object is printed on stdout.
@ -51,6 +52,11 @@ OPTIONS
or to ask for a "blob" with <object> being a tag object that or to ask for a "blob" with <object> being a tag object that
points at it. points at it.
--textconv::
Show the content as transformed by a textconv filter. In this case,
<object> has be of the form <treeish>:<path>, or :<path> in order
to apply the filter to the content recorded in the index at <path>.
--batch:: --batch::
Print the SHA1, type, size, and contents of each object provided on Print the SHA1, type, size, and contents of each object provided on
stdin. May not be combined with any other options or arguments. stdin. May not be combined with any other options or arguments.

View file

@ -9,6 +9,7 @@ SYNOPSIS
-------- --------
[verse] [verse]
'git check-ref-format' <refname> 'git check-ref-format' <refname>
'git check-ref-format' --print <refname>
'git check-ref-format' --branch <branchname-shorthand> 'git check-ref-format' --branch <branchname-shorthand>
DESCRIPTION DESCRIPTION
@ -18,8 +19,9 @@ status if it is not.
A reference is used in git to specify branches and tags. A A reference is used in git to specify branches and tags. A
branch head is stored under the `$GIT_DIR/refs/heads` directory, and branch head is stored under the `$GIT_DIR/refs/heads` directory, and
a tag is stored under the `$GIT_DIR/refs/tags` directory. git a tag is stored under the `$GIT_DIR/refs/tags` directory (or, if refs
imposes the following rules on how references are named: are packed by `git gc`, as entries in the `$GIT_DIR/packed-refs` file).
git imposes the following rules on how references are named:
. They can include slash `/` for hierarchical (directory) . They can include slash `/` for hierarchical (directory)
grouping, but no slash-separated component can begin with a grouping, but no slash-separated component can begin with a
@ -42,7 +44,7 @@ imposes the following rules on how references are named:
. They cannot contain a sequence `@{`. . They cannot contain a sequence `@{`.
- They cannot contain a `\\`. . They cannot contain a `\`.
These rules make it easy for shell script based tools to parse These rules make it easy for shell script based tools to parse
reference names, pathname expansion by the shell when a reference name is used reference names, pathname expansion by the shell when a reference name is used
@ -59,23 +61,35 @@ 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.
With the `--print` option, if 'refname' is acceptable, it prints the
canonicalized name of a hypothetical reference with that name. That is,
it prints 'refname' with any extra `/` characters removed.
With the `--branch` option, it expands the ``previous branch syntax'' With the `--branch` option, it expands the ``previous branch syntax''
`@{-n}`. For example, `@{-1}` is a way to refer the last branch you `@{-n}`. For example, `@{-1}` is a way to refer the last branch you
were on. This option should be used by porcelains to accept this were on. This option should be used by porcelains to accept this
syntax anywhere a branch name is expected, so they can act as if you syntax anywhere a branch name is expected, so they can act as if you
typed the branch name. typed the branch name.
EXAMPLE EXAMPLES
------- --------
git check-ref-format --branch @{-1}:: * Print the name of the previous branch:
+
Print the name of the previous branch. ------------
$ git check-ref-format --branch @{-1}
------------
* Determine the reference name to use for a new branch:
+
------------
$ ref=$(git check-ref-format --print "refs/heads/$newbranch") ||
die "we do not like '$newbranch' as a branch name."
------------
GIT GIT
--- ---

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

@ -9,45 +9,56 @@ SYNOPSIS
-------- --------
[verse] [verse]
'git checkout' [-q] [-f] [-m] [<branch>] 'git checkout' [-q] [-f] [-m] [<branch>]
'git checkout' [-q] [-f] [-m] [-b <new_branch>] [<start_point>] 'git checkout' [-q] [-f] [-m] [[-b|--orphan] <new_branch>] [<start_point>]
'git checkout' [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <paths>... 'git checkout' [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <paths>...
'git checkout' --patch [<tree-ish>] [--] [<paths>...]
DESCRIPTION DESCRIPTION
----------- -----------
Updates files in the working tree to match the version in the index
When <paths> are not given, this command switches branches by or the specified tree. If no paths are given, 'git checkout' will
updating the index, working tree, and HEAD to reflect the specified also update `HEAD` to set the specified branch as the current
branch. branch.
If `-b` is given, a new branch is created and checked out, as if 'git checkout' [<branch>]::
linkgit:git-branch[1] were called; in this case you can 'git checkout' -b <new branch> [<start point>]::
use the --track or --no-track options, which will be passed to `git
branch`. As a convenience, --track without `-b` implies branch
creation; see the description of --track below.
When <paths> are given, this command does *not* switch This form switches branches by updating the index, working
branches. It updates the named paths in the working tree from tree, and HEAD to reflect the specified branch.
the index file, or from a named <tree-ish> (most often a commit). In +
this case, the `-b` and `--track` options are meaningless and giving If `-b` is given, a new branch is created as if linkgit:git-branch[1]
either of them results in an error. The <tree-ish> argument can be were called and then checked out; in this case you can
used to specify a specific tree-ish (i.e. commit, tag or tree) use the `--track` or `--no-track` options, which will be passed to
to update the index for the given paths before updating the 'git branch'. As a convenience, `--track` without `-b` implies branch
working tree. creation; see the description of `--track` below.
The index may contain unmerged entries after a failed merge. By 'git checkout' [--patch] [<tree-ish>] [--] <pathspec>...::
default, if you try to check out such an entry from the index, the
When <paths> or `--patch` are given, 'git checkout' *not* switch
branches. It updates the named paths in the working tree from
the index file or from a named <tree-ish> (most often a commit). In
this case, the `-b` and `--track` options are meaningless and giving
either of them results in an error. The <tree-ish> argument can be
used to specify a specific tree-ish (i.e. commit, tag or tree)
to update the index for the given paths before updating the
working tree.
+
The index may contain unmerged entries because of a previous failed merge.
By default, if you try to check out such an entry from the index, the
checkout operation will fail and nothing will be checked out. checkout operation will fail and nothing will be checked out.
Using -f will ignore these unmerged entries. The contents from a Using `-f` will ignore these unmerged entries. The contents from a
specific side of the merge can be checked out of the index by specific side of the merge can be checked out of the index by
using --ours or --theirs. With -m, changes made to the working tree using `--ours` or `--theirs`. With `-m`, changes made to the working tree
file can be discarded to recreate the original conflicted merge result. file can be discarded to re-create the original conflicted merge result.
OPTIONS OPTIONS
------- -------
-q:: -q::
--quiet::
Quiet, suppress feedback messages. Quiet, suppress feedback messages.
-f:: -f::
--force::
When switching branches, proceed even if the index or the When switching branches, proceed even if the index or the
working tree differs from HEAD. This is used to throw away working tree differs from HEAD. This is used to throw away
local changes. local changes.
@ -87,6 +98,31 @@ explicitly give a name with '-b' in such a case.
Create the new branch's reflog; see linkgit:git-branch[1] for Create the new branch's reflog; see linkgit:git-branch[1] for
details. details.
--orphan::
Create a new 'orphan' branch, named <new_branch>, started from
<start_point> and switch to it. The first commit made on this
new branch will have no parents and it will be the root of a new
history totally disconnected from all the other branches and
commits.
+
The index and the working tree are adjusted as if you had previously run
"git checkout <start_point>". This allows you to start a new history
that records a set of paths similar to <start_point> by easily running
"git commit -a" to make the root commit.
+
This can be useful when you want to publish the tree from a commit
without exposing its full history. You might want to do this to publish
an open source branch of a project whose current tree is "clean", but
whose full history contains proprietary or otherwise encumbered bits of
code.
+
If you want to start a disconnected history that records a set of paths
that is totally different from the one of <start_point>, then you should
clear the index and the working tree right after creating the orphan
branch by running "git rm -rf ." from the top level of the working tree.
Afterwards you will be ready to prepare your new files, repopulating the
working tree, by copying them from elsewhere, extracting a tarball, etc.
-m:: -m::
--merge:: --merge::
When switching branches, When switching branches,
@ -113,6 +149,16 @@ the conflicted merge in the specified paths.
"merge" (default) and "diff3" (in addition to what is shown by "merge" (default) and "diff3" (in addition to what is shown by
"merge" style, shows the original contents). "merge" style, shows the original contents).
-p::
--patch::
Interactively select hunks in the difference between the
<tree-ish> (or the index, if unspecified) and the working
tree. The chosen hunks are then applied in reverse to the
working tree (and if a <tree-ish> was specified, the index).
+
This means that you can use `git checkout -p` to selectively discard
edits from your current working tree.
<branch>:: <branch>::
Branch to checkout; if it refers to a branch (i.e., a name that, Branch to checkout; if it refers to a branch (i.e., a name that,
when prepended with "refs/heads/", is a valid ref), then that when prepended with "refs/heads/", is a valid ref), then that
@ -123,6 +169,10 @@ the conflicted merge in the specified paths.
As a special case, the `"@\{-N\}"` syntax for the N-th last branch As a special case, the `"@\{-N\}"` syntax for the N-th last branch
checks out the branch (instead of detaching). You may also specify checks out the branch (instead of detaching). You may also specify
`-` which is synonymous with `"@\{-1\}"`. `-` which is synonymous with `"@\{-1\}"`.
+
As a further special case, you may use `"A...B"` as a shortcut for the
merge base of `A` and `B` if there is exactly one merge base. You can
leave out at most one of `A` and `B`, in which case it defaults to `HEAD`.
<new_branch>:: <new_branch>::
Name for the new branch. Name for the new branch.

View file

@ -3,28 +3,32 @@ git-cherry-pick(1)
NAME NAME
---- ----
git-cherry-pick - Apply the change introduced by an existing commit git-cherry-pick - Apply the changes introduced by some existing commits
SYNOPSIS SYNOPSIS
-------- --------
'git cherry-pick' [--edit] [-n] [-m parent-number] [-s] [-x] <commit> 'git cherry-pick' [--edit] [-n] [-m parent-number] [-s] [-x] [--ff] <commit>...
DESCRIPTION DESCRIPTION
----------- -----------
Given one existing commit, apply the change the patch introduces, and record a
new commit that records it. This requires your working tree to be clean (no Given one or more existing commits, apply the change each one
modifications from the HEAD commit). introduces, recording a new commit for each. This requires your
working tree to be clean (no modifications from the HEAD commit).
OPTIONS OPTIONS
------- -------
<commit>:: <commit>...::
Commit to cherry-pick. Commits to cherry-pick.
For a more complete list of ways to spell commits, see the For a more complete list of ways to spell commits, see the
"SPECIFYING REVISIONS" section in linkgit:git-rev-parse[1]. "SPECIFYING REVISIONS" section in linkgit:git-rev-parse[1].
Sets of commits can be passed but no traversal is done by
default, as if the '--no-walk' option was specified, see
linkgit:git-rev-list[1].
-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::
@ -55,10 +59,10 @@ OPTIONS
-n:: -n::
--no-commit:: --no-commit::
Usually the command automatically creates a commit. Usually the command automatically creates a sequence of commits.
This flag applies the change necessary to cherry-pick This flag applies the changes necessary to cherry-pick
the named commit to your working tree and the index, each named commit to your working tree and the index,
but does not make the commit. In addition, when this without making any commit. In addition, when this
option is used, your index does not have to match the option is used, your index does not have to match the
HEAD commit. The cherry-pick is done against the HEAD commit. The cherry-pick is done against the
beginning state of your index. beginning state of your index.
@ -70,6 +74,51 @@ effect to your index in a row.
--signoff:: --signoff::
Add Signed-off-by line at the end of the commit message. Add Signed-off-by line at the end of the commit message.
--ff::
If the current HEAD is the same as the parent of the
cherry-pick'ed commit, then a fast forward to this commit will
be performed.
EXAMPLES
--------
git cherry-pick master::
Apply the change introduced by the commit at the tip of the
master branch and create a new commit with this change.
git cherry-pick ..master::
git cherry-pick ^HEAD master::
Apply the changes introduced by all commits that are ancestors
of master but not of HEAD to produce new commits.
git cherry-pick master\~4 master~2::
Apply the changes introduced by the fifth and third last
commits pointed to by master and create 2 new commits with
these changes.
git cherry-pick -n master~1 next::
Apply to the working tree and the index the changes introduced
by the second last commit pointed to by master and by the last
commit pointed to by next, but do not create any commit with
these changes.
git cherry-pick --ff ..next::
If history is linear and HEAD is an ancestor of next, update
the working tree and advance the HEAD pointer to match next.
Otherwise, apply the changes introduced by those commits that
are in next but not HEAD to the current branch, creating a new
commit for each new change.
git rev-list --reverse master \-- README | git cherry-pick -n --stdin::
Apply the changes introduced by all commits on the master
branch that touched README to the working tree and index,
so the result can be inspected and made into a single new
commit if suitable.
Author Author
------ ------
@ -79,6 +128,10 @@ Documentation
-------------- --------------
Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>. Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
SEE ALSO
--------
linkgit:git-revert[1]
GIT GIT
--- ---
Part of the linkgit:git[1] suite Part of the linkgit:git[1] suite

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

@ -32,8 +32,9 @@ OPTIONS
if you really want to remove such a directory. if you really want to remove such a directory.
-f:: -f::
If the git configuration specifies clean.requireForce as true, --force::
'git-clean' will refuse to run unless given -f or -n. If the git configuration variable clean.requireForce is not set
to false, 'git clean' will refuse to run unless given -f or -n.
-n:: -n::
--dry-run:: --dry-run::
@ -47,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

@ -11,16 +11,17 @@ SYNOPSIS
[verse] [verse]
'git clone' [--template=<template_directory>] 'git clone' [--template=<template_directory>]
[-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror] [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
[-o <name>] [-u <upload-pack>] [--reference <repository>] [-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
[--depth <depth>] [--] <repository> [<directory>] [--depth <depth>] [--recursive] [--] <repository> [<directory>]
DESCRIPTION DESCRIPTION
----------- -----------
Clones a repository into a newly created directory, creates Clones a repository into a newly created directory, creates
remote-tracking branches for each branch in the cloned repository remote-tracking branches for each branch in the cloned repository
(visible using `git branch -r`), and creates and checks out an initial (visible using `git branch -r`), and creates and checks out an
branch equal to the cloned repository's currently active branch. initial branch that is forked from the cloned repository's
currently active branch.
After the clone, a plain `git fetch` without arguments will update After the clone, a plain `git fetch` without arguments will update
all the remote-tracking branches, and a `git pull` without all the remote-tracking branches, and a `git pull` without
@ -28,7 +29,7 @@ arguments will in addition merge the remote master branch into the
current master branch, if any. current master branch, if any.
This default configuration is achieved by creating references to This default configuration is achieved by creating references to
the remote branch heads under `$GIT_DIR/refs/remotes/origin` and the remote branch heads under `refs/remotes/origin` and
by initializing `remote.origin.url` and `remote.origin.fetch` by initializing `remote.origin.url` and `remote.origin.fetch`
configuration variables. configuration variables.
@ -38,7 +39,7 @@ OPTIONS
--local:: --local::
-l:: -l::
When the repository to clone from is on a local machine, When the repository to clone from is on a local machine,
this flag bypasses normal "git aware" transport this flag bypasses the normal "git aware" transport
mechanism and clones the repository by making a copy of mechanism and clones the repository by making a copy of
HEAD and everything under objects and refs directories. HEAD and everything under objects and refs directories.
The files under `.git/objects/` directory are hardlinked The files under `.git/objects/` directory are hardlinked
@ -59,7 +60,7 @@ OPTIONS
-s:: -s::
When the repository to clone is on the local machine, When the repository to clone is on the local machine,
instead of using hard links, automatically setup instead of using hard links, automatically setup
.git/objects/info/alternates to share the objects `.git/objects/info/alternates` to share the objects
with the source repository. The resulting repository with the source repository. The resulting repository
starts out without any object of its own. starts out without any object of its own.
+ +
@ -68,7 +69,7 @@ it unless you understand what it does. If you clone your
repository using this option and then delete branches (or use any repository using this option and then delete branches (or use any
other git command that makes any existing commit unreferenced) in the other git command that makes any existing commit unreferenced) in the
source repository, some objects may become unreferenced (or dangling). source repository, some objects may become unreferenced (or dangling).
These objects may be removed by normal git operations (such as 'git-commit') These objects may be removed by normal git operations (such as `git commit`)
which automatically call `git gc --auto`. (See linkgit:git-gc[1].) which automatically call `git gc --auto`. (See linkgit:git-gc[1].)
If these objects are removed and were referenced by the cloned repository, If these objects are removed and were referenced by the cloned repository,
then the cloned repository will become corrupt. then the cloned repository will become corrupt.
@ -85,23 +86,30 @@ objects from the source repository into a pack in the cloned repository.
--reference <repository>:: --reference <repository>::
If the reference repository is on the local machine, If the reference repository is on the local machine,
automatically setup .git/objects/info/alternates to automatically setup `.git/objects/info/alternates` to
obtain objects from the reference repository. Using obtain objects from the reference repository. Using
an already existing repository as an alternate will an already existing repository as an alternate will
require fewer objects to be copied from the repository require fewer objects to be copied from the repository
being cloned, reducing network and local storage costs. being cloned, reducing network and local storage costs.
+ +
*NOTE*: see NOTE to --shared option. *NOTE*: see the NOTE for the `--shared` option.
--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 progressbar, even in case the standard output is not Run verbosely. Does not affect the reporting of progress status
a terminal. to the standard error stream.
--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::
@ -120,12 +128,19 @@ objects from the source repository into a pack in the cloned repository.
configuration variables are created. configuration variables are created.
--mirror:: --mirror::
Set up a mirror of the remote repository. This implies --bare. Set up a mirror of the remote repository. This implies `--bare`.
--origin <name>:: --origin <name>::
-o <name>:: -o <name>::
Instead of using the remote name 'origin' to keep track Instead of using the remote name `origin` to keep track
of the upstream repository, use <name>. of the upstream repository, use `<name>`.
--branch <name>::
-b <name>::
Instead of pointing the newly created HEAD to the branch pointed
to by the cloned repository's HEAD, point to `<name>` branch
instead. In a non-bare repository, this is the branch that will
be checked out.
--upload-pack <upload-pack>:: --upload-pack <upload-pack>::
-u <upload-pack>:: -u <upload-pack>::
@ -135,8 +150,7 @@ objects from the source repository into a pack in the cloned repository.
--template=<template_directory>:: --template=<template_directory>::
Specify the directory from which templates will be used; Specify the directory from which templates will be used;
if unset the templates are taken from the installation (See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)
defined default, typically `/usr/share/git-core/templates`.
--depth <depth>:: --depth <depth>::
Create a 'shallow' clone with a history truncated to the Create a 'shallow' clone with a history truncated to the
@ -147,6 +161,14 @@ objects from the source repository into a pack in the cloned repository.
with a long history, and would want to send in fixes with a long history, and would want to send in fixes
as patches. as patches.
--recursive::
After the clone is created, initialize all submodules within,
using their default settings. This is equivalent to running
`git submodule update --init --recursive` immediately after
the clone is finished. This option is ignored if the cloned
repository does not have a worktree/checkout (i.e. if any of
`--no-checkout`/`-n`, `--bare`, or `--mirror` is given)
<repository>:: <repository>::
The (possibly remote) repository to clone from. See the The (possibly remote) repository to clone from. See the
<<URLS,URLS>> section below for more information on specifying <<URLS,URLS>> section below for more information on specifying
@ -155,8 +177,8 @@ objects from the source repository into a pack in the cloned repository.
<directory>:: <directory>::
The name of a new directory to clone into. The "humanish" The name of a new directory to clone into. The "humanish"
part of the source repository is used if no directory is part of the source repository is used if no directory is
explicitly given ("repo" for "/path/to/repo.git" and "foo" explicitly given (`repo` for `/path/to/repo.git` and `foo`
for "host.xz:foo/.git"). Cloning into an existing directory for `host.xz:foo/.git`). Cloning into an existing directory
is only allowed if the directory is empty. is only allowed if the directory is empty.
:git-clone: 1 :git-clone: 1
@ -165,7 +187,7 @@ include::urls.txt[]
Examples Examples
-------- --------
Clone from upstream:: * Clone from upstream:
+ +
------------ ------------
$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6 $ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
@ -174,7 +196,7 @@ $ make
------------ ------------
Make a local clone that borrows from the current directory, without checking things out:: * Make a local clone that borrows from the current directory, without checking things out:
+ +
------------ ------------
$ git clone -l -s -n . ../copy $ git clone -l -s -n . ../copy
@ -183,7 +205,7 @@ $ git show-branch
------------ ------------
Clone from upstream while borrowing from an existing local directory:: * Clone from upstream while borrowing from an existing local directory:
+ +
------------ ------------
$ git clone --reference my2.6 \ $ git clone --reference my2.6 \
@ -193,14 +215,14 @@ $ cd my2.7
------------ ------------
Create a bare repository to publish your changes to the public:: * Create a bare repository to publish your changes to the public:
+ +
------------ ------------
$ git clone --bare -l /home/proj/.git /pub/scm/proj.git $ git clone --bare -l /home/proj/.git /pub/scm/proj.git
------------ ------------
Create a repository on the kernel.org machine that borrows from Linus:: * Create a repository on the kernel.org machine that borrows from Linus:
+ +
------------ ------------
$ git clone --bare -l -s /pub/scm/.../torvalds/linux-2.6.git \ $ git clone --bare -l -s /pub/scm/.../torvalds/linux-2.6.git \

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

@ -8,10 +8,11 @@ git-commit - Record changes to the repository
SYNOPSIS SYNOPSIS
-------- --------
[verse] [verse]
'git commit' [-a | --interactive] [-s] [-v] [-u<mode>] [--amend] 'git commit' [-a | --interactive] [-s] [-v] [-u<mode>] [--amend] [--dry-run]
[(-c | -C) <commit>] [-F <file> | -m <msg>] [(-c | -C) <commit>] [-F <file> | -m <msg>] [--reset-author]
[--allow-empty] [--no-verify] [-e] [--author=<author>] [--allow-empty] [--allow-empty-message] [--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,15 +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 'git-status' command 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 you would give to commit by giving the same set of parameters (options and paths).
this command.
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
@ -70,16 +70,39 @@ OPTIONS
Like '-C', but with '-c' the editor is invoked, so that Like '-C', but with '-c' the editor is invoked, so that
the user can further edit the commit message. the user can further edit the commit message.
--reset-author::
When used with -C/-c/--amend options, declare that the
authorship of the resulting commit now belongs of the committer.
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
read the message from the standard input. read the message from the standard input.
--author=<author>:: --author=<author>::
Override the author name used in the commit. You can use the Override the commit author. Specify an explicit author using the
standard `A U Thor <author@example.com>` format. Otherwise, standard `A U Thor <author@example.com>` format. Otherwise <author>
an existing commit that matches the given string and its author is assumed to be a pattern and is used to search for an existing
name is used. commit by that author (i.e. rev-list --all -i --author=<author>);
the commit author is then copied from the first such commit found.
--date=<date>::
Override the author date used in the commit.
-m <msg>:: -m <msg>::
--message=<msg>:: --message=<msg>::
@ -109,6 +132,12 @@ OPTIONS
from making such a commit. This option bypasses the safety, and from making such a commit. This option bypasses the safety, and
is primarily for use by foreign scm interface scripts. is primarily for use by foreign scm interface scripts.
--allow-empty-message::
Like --allow-empty this command is primarily for use by foreign
scm interface scripts. It allows you to create a commit with an
empty commit message without using plumbing commands like
linkgit:git-commit-tree[1].
--cleanup=<mode>:: --cleanup=<mode>::
This option sets how the commit message is cleaned up. This option sets how the commit message is cleaned up.
The '<mode>' can be one of 'verbatim', 'whitespace', 'strip', The '<mode>' can be one of 'verbatim', 'whitespace', 'strip',
@ -163,7 +192,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
@ -175,13 +204,13 @@ FROM UPSTREAM REBASE" section in linkgit:git-rebase[1].)
Show untracked files (Default: 'all'). Show untracked files (Default: 'all').
+ +
The mode parameter is optional, and is used to specify The mode parameter is optional, and is used to specify
the handling of untracked files. The possible options are: the handling of untracked files.
+
The possible options are:
+ +
--
- 'no' - Show no untracked files - 'no' - Show no untracked files
- 'normal' - Shows untracked files and directories - 'normal' - Shows untracked files and directories
- 'all' - Also shows individual files in untracked directories. - 'all' - Also shows individual files in untracked directories.
--
+ +
See linkgit:git-config[1] for configuration variable See linkgit:git-config[1] for configuration variable
used to change the default for when the option is not used to change the default for when the option is not
@ -198,6 +227,22 @@ specified.
--quiet:: --quiet::
Suppress commit summary message. Suppress commit summary message.
--dry-run::
Do not create a commit, but show a list of paths that are
to be committed, paths with local changes that will be left
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.
@ -208,15 +253,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
@ -272,13 +319,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
@ -319,7 +366,7 @@ ENVIRONMENT AND CONFIGURATION VARIABLES
The editor used to edit the commit log message will be chosen from the The editor used to edit the commit log message will be chosen from the
GIT_EDITOR environment variable, the core.editor configuration variable, the GIT_EDITOR environment variable, the core.editor configuration variable, the
VISUAL environment variable, or the EDITOR environment variable (in that VISUAL environment variable, or the EDITOR environment variable (in that
order). order). See linkgit:git-var[1] for details.
HOOKS HOOKS
----- -----

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

@ -13,7 +13,7 @@ SYNOPSIS
[-A <author-conv-file>] [-p <options-for-cvsps>] [-P <file>] [-A <author-conv-file>] [-p <options-for-cvsps>] [-P <file>]
[-C <git_repository>] [-z <fuzz>] [-i] [-k] [-u] [-s <subst>] [-C <git_repository>] [-z <fuzz>] [-i] [-k] [-u] [-s <subst>]
[-a] [-m] [-M <regex>] [-S <regex>] [-L <commitlimit>] [-a] [-m] [-M <regex>] [-S <regex>] [-L <commitlimit>]
[-r <remote>] [<CVS_module>] [-r <remote>] [-R] [<CVS_module>]
DESCRIPTION DESCRIPTION
@ -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,33 @@ 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'.
-R::
Generate a `$GIT_DIR/cvs-revisions` file containing a mapping from CVS
revision numbers to newly-created Git commit IDs. The generated file
will contain one line for each (filename, revision) pair imported;
each line will look like
+
---------
src/widget.c 1.1 1d862f173cdc7325b6fa6d2ae1cfd61fd1b512b7
---------
+
The revision data is appended to the file if it already exists, for use when
doing incremental imports.
+
This option may be useful if you have CVS revision numbers stored in commit
messages, bug-tracking systems, email archives, and the like.
-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
------- -------
@ -72,9 +72,6 @@ plugin. Most functionality works fine with both of these clients.
LIMITATIONS LIMITATIONS
----------- -----------
Currently cvsserver works over SSH connections for read/write clients, and
over pserver for anonymous CVS access.
CVS clients cannot tag, branch or perform GIT merges. CVS clients cannot tag, branch or perform GIT merges.
'git-cvsserver' maps GIT branches to CVS modules. This is very different 'git-cvsserver' maps GIT branches to CVS modules. This is very different
@ -84,7 +81,7 @@ one or more directories.
INSTALLATION INSTALLATION
------------ ------------
1. If you are going to offer anonymous CVS access via pserver, add a line in 1. If you are going to offer CVS access via pserver, add a line in
/etc/inetd.conf like /etc/inetd.conf like
+ +
-- --
@ -101,6 +98,38 @@ looks like
cvspserver stream tcp nowait nobody /usr/bin/git-cvsserver git-cvsserver pserver cvspserver stream tcp nowait nobody /usr/bin/git-cvsserver git-cvsserver pserver
------ ------
Only anonymous access is provided by pserve by default. To commit you
will have to create pserver accounts, simply add a gitcvs.authdb
setting in the config file of the repositories you want the cvsserver
to allow writes to, for example:
------
[gitcvs]
authdb = /etc/cvsserver/passwd
------
The format of these files is username followed by the crypted password,
for example:
------
myuser:$1Oyx5r9mdGZ2
myuser:$1$BA)@$vbnMJMDym7tA32AamXrm./
------
You can use the 'htpasswd' facility that comes with Apache to make these
files, but Apache's MD5 crypt method differs from the one used by most C
library's crypt() function, so don't use the -m option.
Alternatively you can produce the password with perl's crypt() operator:
-----
perl -e 'my ($user, $pass) = @ARGV; printf "%s:%s\n", $user, crypt($user, $pass)' $USER password
-----
Then provide your password via the pserver method, for example:
------
cvs -d:pserver:someuser:somepassword <at> server/path/repo.git co <HEAD_name>
------
No special setup is needed for SSH access, other than having GIT tools No special setup is needed for SSH access, other than having GIT tools
in the PATH. If you have clients that do not accept the CVS_SERVER in the PATH. If you have clients that do not accept the CVS_SERVER
environment variable, you can rename 'git-cvsserver' to `cvs`. environment variable, you can rename 'git-cvsserver' to `cvs`.
@ -182,10 +211,9 @@ Database Backend
---------------- ----------------
'git-cvsserver' uses one database per git head (i.e. CVS module) to 'git-cvsserver' uses one database per git head (i.e. CVS module) to
store information about the repository for faster access. The store information about the repository to maintain consistent
database doesn't contain any persistent data and can be completely CVS revision numbers. The database needs to be
regenerated from the git repository at any time. The database updated (i.e. written to) after every commit.
needs to be updated (i.e. written to) after every commit.
If the commit is done directly by using `git` (as opposed to If the commit is done directly by using `git` (as opposed to
using 'git-cvsserver') the update will need to happen on the using 'git-cvsserver') the update will need to happen on the
@ -204,6 +232,18 @@ write so it might not be enough to grant the users using
'git-cvsserver' write access to the database file without granting 'git-cvsserver' write access to the database file without granting
them write access to the directory, too. them write access to the directory, too.
The database can not be reliably regenerated in a
consistent form after the branch it is tracking has changed.
Example: For merged branches, 'git-cvsserver' only tracks
one branch of development, and after a 'git merge' an
incrementally updated database may track a different branch
than a database regenerated from scratch, causing inconsistent
CVS revision numbers. `git-cvsserver` has no way of knowing which
branch it would have picked if it had been run incrementally
pre-merge. So if you have to fully or partially (from old
backup) regenerate the database, you should be suspicious
of pre-existing CVS sandboxes.
You can configure the database backend with the following You can configure the database backend with the following
configuration variables: configuration variables:
@ -266,6 +306,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
------------------------ ------------------------
@ -283,7 +338,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
@ -314,16 +369,13 @@ By default the server leaves the '-k' mode blank for all files,
which causes the cvs client to treat them as a text files, subject which causes the cvs client to treat them as a text files, subject
to crlf conversion on some platforms. to crlf conversion on some platforms.
You can make the server use `crlf` attributes to set the '-k' modes You can make the server use the end-of-line conversion attributes to
for files by setting the `gitcvs.usecrlfattr` config variable. set the '-k' modes for files by setting the `gitcvs.usecrlfattr`
In this case, if `crlf` is explicitly unset ('-crlf'), then the config variable. See linkgit:gitattributes[5] for more information
server will set '-kb' mode for binary files. If `crlf` is set, about end-of-line conversion.
then the '-k' mode will explicitly be left blank. See
also linkgit:gitattributes[5] for more information about the `crlf`
attribute.
Alternatively, if `gitcvs.usecrlfattr` config is not enabled Alternatively, if `gitcvs.usecrlfattr` config is not enabled
or if the `crlf` attribute is unspecified for a filename, then or the attributes do not allow automatic detection for a filename, then
the server uses the `gitcvs.allbinary` config for the default setting. the server uses the `gitcvs.allbinary` config for the default setting.
If `gitcvs.allbinary` is set, then file not otherwise If `gitcvs.allbinary` is set, then file not otherwise
specified will default to '-kb' mode. Otherwise the '-k' mode specified will default to '-kb' mode. Otherwise the '-k' mode

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

@ -8,7 +8,9 @@ git-describe - Show the most recent tag that is reachable from a commit
SYNOPSIS SYNOPSIS
-------- --------
[verse]
'git describe' [--all] [--tags] [--contains] [--abbrev=<n>] <committish>... 'git describe' [--all] [--tags] [--contains] [--abbrev=<n>] <committish>...
'git describe' [--all] [--tags] [--contains] [--abbrev=<n>] --dirty[=<mark>]
DESCRIPTION DESCRIPTION
----------- -----------
@ -27,6 +29,11 @@ OPTIONS
<committish>...:: <committish>...::
Committish object names to describe. Committish object names to describe.
--dirty[=<mark>]::
Describe the working tree.
It means describe HEAD and appends <mark> (`-dirty` by
default) if the working tree is dirty.
--all:: --all::
Instead of using only the annotated tags, use any ref Instead of using only the annotated tags, use any ref
found in `.git/refs/`. This option enables matching found in `.git/refs/`. This option enables matching
@ -44,7 +51,9 @@ OPTIONS
--abbrev=<n>:: --abbrev=<n>::
Instead of using the default 7 hexadecimal digits as the Instead of using the default 7 hexadecimal digits as the
abbreviated object name, use <n> digits. abbreviated object name, use <n> digits, or as many digits
as needed to form a unique object name. An <n> of 0
will suppress long format, only showing the closest tag.
--candidates=<n>:: --candidates=<n>::
Instead of considering only the 10 most recent tags as Instead of considering only the 10 most recent tags as
@ -68,8 +77,8 @@ OPTIONS
This is useful when you want to see parts of the commit object name This is useful when you want to see parts of the commit object name
in "describe" output, even when the commit in question happens to be in "describe" output, even when the commit in question happens to be
a tagged version. Instead of just emitting the tag name, it will a tagged version. Instead of just emitting the tag name, it will
describe such a commit as v1.2-0-deadbeef (0th commit since tag v1.2 describe such a commit as v1.2-0-gdeadbee (0th commit since tag v1.2
that points at object deadbeef....). that points at object deadbee....).
--match <pattern>:: --match <pattern>::
Only consider tags matching the given pattern (can be used to avoid Only consider tags matching the given pattern (can be used to avoid
@ -96,8 +105,11 @@ The number of additional commits is the number
of commits which would be displayed by "git log v1.0.4..parent". 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`).
The "g" prefix stands for "git" and is used to allow describing the version of
a software depending on the SCM the software is managed with. This is useful
in an environment where people may use different SCMs.
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
@ -108,7 +120,7 @@ the output shows the reference path as well:
[torvalds@g5 git]$ git describe --all --abbrev=4 v1.0.5^2 [torvalds@g5 git]$ git describe --all --abbrev=4 v1.0.5^2
tags/v1.0.0-21-g975b tags/v1.0.0-21-g975b
[torvalds@g5 git]$ git describe --all HEAD^ [torvalds@g5 git]$ git describe --all --abbrev=4 HEAD^
heads/lt/describe-7-g975b heads/lt/describe-7-g975b
With --abbrev set to 0, the command can be used to find the With --abbrev set to 0, the command can be used to find the
@ -117,16 +129,23 @@ closest tagname without any suffix:
[torvalds@g5 git]$ git describe --abbrev=0 v1.0.5^2 [torvalds@g5 git]$ git describe --abbrev=0 v1.0.5^2
tags/v1.0.0 tags/v1.0.0
Note that the suffix you get if you type these commands today may be
longer than what Linus saw above when he ran these commands, as your
git repository may have new commits whose object names begin with
975b that did not exist back then, and "-g975b" suffix alone may not
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
------- -------
@ -31,25 +31,25 @@ OPTIONS
Use the diff tool specified by <tool>. Use the diff tool specified by <tool>.
Valid merge tools are: Valid merge tools are:
kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff,
ecmerge, diffuse, opendiff 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
@ -37,7 +37,7 @@ unsigned, with 'verbatim', they will be silently exported
and with 'warn', they will be exported, but you will see a warning. and with 'warn', they will be exported, but you will see a warning.
--tag-of-filtered-object=(abort|drop|rewrite):: --tag-of-filtered-object=(abort|drop|rewrite)::
Specify how to handle tags whose tagged objectis filtered out. Specify how to handle tags whose tagged object is filtered out.
Since revisions and files to export can be limited by path, Since revisions and files to export can be limited by path,
tagged objects may be filtered completely. tagged objects may be filtered completely.
+ +
@ -82,9 +82,17 @@ marks the same across runs.
allow that. So fake a tagger to be able to fast-import the allow that. So fake a tagger to be able to fast-import the
output. output.
--no-data::
Skip output of blob objects and instead refer to blobs via
their original SHA-1 hash. This is useful when rewriting the
directory structure or history of a repository without
touching the contents of individual files. Note that the
resulting stream can only be used by a repository which
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.
@ -117,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.
@ -44,11 +44,14 @@ OPTIONS
not contain the old commit). not contain the old commit).
--max-pack-size=<n>:: --max-pack-size=<n>::
Maximum size of each output packfile, expressed in MiB. Maximum size of each output packfile.
The default is 4096 (4 GiB) as that is the maximum allowed The default is unlimited.
packfile size (due to file format limitations). Some
importers may wish to lower this, such as to ensure the --big-file-threshold=<n>::
resulting packfiles fit on CDs. Maximum size of a blob that fast-import will attempt to
create a delta for, expressed in bytes. The default is 512m
(512 MiB). Some importers may wish to lower this on systems
with constrained memory.
--depth=<n>:: --depth=<n>::
Maximum delta depth, for blob and tree deltification. Maximum delta depth, for blob and tree deltification.
@ -75,6 +78,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 +99,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 +141,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.
@ -138,7 +155,7 @@ fast-forward update, fast-import will skip updating that ref and instead
prints a warning message. fast-import will always attempt to update all prints a warning message. fast-import will always attempt to update all
branch refs, and does not stop on the first failure. branch refs, and does not stop on the first failure.
Branch updates can be forced with \--force, but its recommended that Branch updates can be forced with \--force, but it's recommended that
this only be used on an otherwise quiet repository. Using \--force this only be used on an otherwise quiet repository. Using \--force
is not necessary for an initial import into an empty repository. is not necessary for an initial import into an empty repository.
@ -220,7 +237,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
@ -253,10 +270,10 @@ is always copied into the identity string at the time it is being
created by fast-import. There is no way to specify a different time or created by fast-import. There is no way to specify a different time or
timezone. timezone.
+ +
This particular format is supplied as its short to implement and This particular format is supplied as it's 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 +320,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
@ -311,12 +337,12 @@ change to the project.
.... ....
'commit' SP <ref> LF 'commit' SP <ref> LF
mark? mark?
('author' SP <name> SP LT <email> GT SP <when> LF)? ('author' (SP <name>)? SP LT <email> GT SP <when> LF)?
'committer' SP <name> SP LT <email> GT SP <when> LF 'committer' (SP <name>)? SP LT <email> GT SP <when> LF
data data
('from' SP <committish> LF)? ('from' SP <committish> LF)?
('merge' SP <committish> LF)? ('merge' SP <committish> LF)?
(filemodify | filedelete | filecopy | filerename | filedeleteall)* (filemodify | filedelete | filecopy | filerename | filedeleteall | notemodify)*
LF? LF?
.... ....
@ -339,14 +365,13 @@ commit message use a 0 length data. Commit messages are free-form
and are not interpreted by Git. Currently they must be encoded in and are not interpreted by Git. Currently they must be encoded in
UTF-8, as fast-import does not permit other encodings to be specified. UTF-8, as fast-import does not permit other encodings to be specified.
Zero or more `filemodify`, `filedelete`, `filecopy`, `filerename` Zero or more `filemodify`, `filedelete`, `filecopy`, `filerename`,
and `filedeleteall` commands `filedeleteall` and `notemodify` commands
may be included to update the contents of the branch prior to may be included to update the contents of the branch prior to
creating the commit. These commands may be supplied in any order. creating the commit. These commands may be supplied in any order.
However it is recommended that a `filedeleteall` command precede However it is recommended that a `filedeleteall` command precede
all `filemodify`, `filecopy` and `filerename` commands in the same all `filemodify`, `filecopy`, `filerename` and `notemodify` commands in
commit, as `filedeleteall` the same commit, as `filedeleteall` wipes the branch clean (see below).
wipes the branch clean (see below).
The `LF` after the command is optional (it used to be required). The `LF` after the command is optional (it used to be required).
@ -398,7 +423,7 @@ quoting or escaping syntax is supported within `<committish>`.
Here `<committish>` is any of the following: Here `<committish>` is any of the following:
* The name of an existing branch already in fast-import's internal branch * The name of an existing branch already in fast-import's internal branch
table. If fast-import doesn't know the name, its treated as a SHA-1 table. If fast-import doesn't know the name, it's treated as a SHA-1
expression. expression.
* A mark reference, `:<idnum>`, where `<idnum>` is the mark number. * A mark reference, `:<idnum>`, where `<idnum>` is the mark number.
@ -595,6 +620,40 @@ more memory per active branch (less than 1 MiB for even most large
projects); so frontends that can easily obtain only the affected projects); so frontends that can easily obtain only the affected
paths for a commit are encouraged to do so. paths for a commit are encouraged to do so.
`notemodify`
^^^^^^^^^^^^
Included in a `commit` command to add a new note (annotating a given
commit) or change the content of an existing note. This command has
two different means of specifying the content of the note.
External data format::
The data content for the note was already supplied by a prior
`blob` command. The frontend just needs to connect it to the
commit that is to be annotated.
+
....
'N' SP <dataref> SP <committish> LF
....
+
Here `<dataref>` can be either a mark reference (`:<idnum>`)
set by a prior `blob` command, or a full 40-byte SHA-1 of an
existing Git blob object.
Inline data format::
The data content for the note has not been supplied yet.
The frontend wants to supply it as part of this modify
command.
+
....
'N' SP 'inline' SP <committish> LF
data
....
+
See below for a detailed description of the `data` command.
In both formats `<committish>` is any of the commit specification
expressions also accepted by `from` (see above).
`mark` `mark`
~~~~~~ ~~~~~~
Arranges for fast-import to save a reference to the current object, allowing Arranges for fast-import to save a reference to the current object, allowing
@ -624,7 +683,7 @@ lightweight (non-annotated) tags see the `reset` command below.
.... ....
'tag' SP <name> LF 'tag' SP <name> LF
'from' SP <committish> LF 'from' SP <committish> LF
'tagger' SP <name> SP LT <email> GT SP <when> LF 'tagger' (SP <name>)? SP LT <email> GT SP <when> LF
data data
.... ....
@ -657,7 +716,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`
~~~~~~~ ~~~~~~~
@ -703,7 +762,7 @@ assigned mark.
The mark command is optional here as some frontends have chosen The mark command is optional here as some frontends have chosen
to generate the Git SHA-1 for the blob on their own, and feed that to generate the Git SHA-1 for the blob on their own, and feed that
directly to `commit`. This is typically more work than its worth directly to `commit`. This is typically more work than it's worth
however, as marks are inexpensive to store and easy to use. however, as marks are inexpensive to store and easy to use.
`data` `data`
@ -813,6 +872,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
@ -958,7 +1073,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.
@ -987,7 +1102,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,13 +12,13 @@ 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
and asks it to send objects missing from this repository, to and asks it to send objects missing from this repository, to
update the named heads. The list of commits available locally update the named heads. The list of commits available locally
is found out by scanning local $GIT_DIR/refs/ and sent to is found out by scanning the local refs/ hierarchy and sent to
'git-upload-pack' running on the other end. 'git-upload-pack' running on the other end.
This command degenerates to download everything to complete the This command degenerates to download everything to complete the
@ -33,19 +33,19 @@ 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.
--thin:: --thin::
Spend extra cycles to minimize the number of objects to be sent. Fetch a "thin" pack, which records objects in deltified form based
Use it on slower connection. on objects not included in the pack to reduce network traffic.
--include-tag:: --include-tag::
If the remote side supports it, annotated tags objects will If the remote side supports it, annotated tags objects will

View file

@ -8,17 +8,23 @@ git-fetch - Download objects and refs from another repository
SYNOPSIS SYNOPSIS
-------- --------
'git fetch' <options> <repository> <refspec>... 'git fetch' [<options>] [<repository> [<refspec>...]]
'git fetch' [<options>] <group>
'git fetch' --multiple [<options>] [<repository> | <group>]...
'git fetch' --all [<options>]
DESCRIPTION DESCRIPTION
----------- -----------
Fetches named heads or tags from another repository, along with Fetches named heads or tags from one or more other repositories,
the objects necessary to complete them. 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
@ -28,6 +34,10 @@ pointed by remote tags that it does not yet have, then fetch
those missing tags. If the other end has tags that point at those missing tags. If the other end has tags that point at
branches you are not interested in, you will not get them. branches you are not interested in, you will not get them.
'git fetch' can fetch from either a single named repository, or
or from several repositories at once if <group> is given and
there is a remotes.<group> entry in the configuration file.
(See linkgit:git-config[1]).
OPTIONS OPTIONS
------- -------
@ -37,6 +47,35 @@ include::pull-fetch-param.txt[]
include::urls-remotes.txt[] include::urls-remotes.txt[]
EXAMPLES
--------
* Update the remote-tracking branches:
+
------------------------------------------------
$ git fetch origin
------------------------------------------------
+
The above command copies all branches from the remote refs/heads/
namespace and stores them to the local refs/remotes/origin/ namespace,
unless the branch.<name>.fetch option is used to specify a non-default
refspec.
* Using refspecs explicitly:
+
------------------------------------------------
$ git fetch origin +pu:pu maint:tmp
------------------------------------------------
+
This updates (or creates, as necessary) branches `pu` and `tmp` in
the local repository by fetching from the branches (respectively)
`pu` and `maint` from the remote repository.
+
The `pu` branch will be updated even if it is does not fast-forward,
because it is prefixed with a plus sign; `tmp` will not be.
SEE ALSO SEE ALSO
-------- --------
linkgit:git-pull[1] linkgit:git-pull[1]

View file

@ -12,6 +12,7 @@ SYNOPSIS
[--index-filter <command>] [--parent-filter <command>] [--index-filter <command>] [--parent-filter <command>]
[--msg-filter <command>] [--commit-filter <command>] [--msg-filter <command>] [--commit-filter <command>]
[--tag-name-filter <command>] [--subdirectory-filter <directory>] [--tag-name-filter <command>] [--subdirectory-filter <directory>]
[--prune-empty]
[--original <namespace>] [-d <directory>] [-f | --force] [--original <namespace>] [-d <directory>] [-f | --force]
[--] [<rev-list options>...] [--] [<rev-list options>...]
@ -115,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.
+ +
@ -126,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>::
@ -158,7 +159,18 @@ to other tags will be rewritten to point to the underlying commit.
--subdirectory-filter <directory>:: --subdirectory-filter <directory>::
Only look at the history which touches the given subdirectory. Only look at the history which touches the given subdirectory.
The result will contain that directory (and only that) as its The result will contain that directory (and only that) as its
project root. project root. Implies --remap-to-ancestor.
--remap-to-ancestor::
Rewrite refs to the nearest rewritten ancestor instead of
ignoring them.
+
Normally, positive refs on the command line are only changed if the
commit they point to was rewritten. However, you can limit the extent
of this rewriting by using linkgit:rev-list[1] arguments, e.g., path
limiters. Refs pointing to such excluded commits would then normally
be ignored. With this option, they are instead rewritten to point at
the nearest ancestor that was not excluded.
--prune-empty:: --prune-empty::
Some kind of filters will generate empty commits, that left the tree Some kind of filters will generate empty commits, that left the tree
@ -167,7 +179,7 @@ to other tags will be rewritten to point to the underlying commit.
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>::
@ -184,15 +196,15 @@ to other tags will be rewritten to point to the underlying commit.
-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
@ -209,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
@ -291,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:
------------------------------------------------------- -------------------------------------------------------
@ -302,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
@ -318,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:
@ -346,7 +358,7 @@ To move the whole tree into a subdirectory, or remove it from there:
--------------------------------------------------------------- ---------------------------------------------------------------
git filter-branch --index-filter \ git filter-branch --index-filter \
'git ls-files -s | sed "s-\t-&newsubdir/-" | 'git ls-files -s | sed "s-\t\"*-&newsubdir/-" |
GIT_INDEX_FILE=$GIT_INDEX_FILE.new \ GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
git update-index --index-info && git update-index --index-info &&
mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD

View file

@ -16,10 +16,10 @@ 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 script 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'.
OPTIONS OPTIONS
------- -------

View file

@ -82,10 +82,11 @@ 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).
For a non-ambiguous abbreviation of the object name append `:short`.
upstream:: upstream::
The name of a local ref which can be considered ``upstream'' The name of a local ref which can be considered ``upstream''

View file

@ -13,12 +13,13 @@ SYNOPSIS
[--no-thread | --thread[=<style>]] [--no-thread | --thread[=<style>]]
[(--attach|--inline)[=<boundary>] | --no-attach] [(--attach|--inline)[=<boundary>] | --no-attach]
[-s | --signoff] [-s | --signoff]
[--signature=<signature> | --no-signature]
[-n | --numbered | -N | --no-numbered] [-n | --numbered | -N | --no-numbered]
[--start-number <n>] [--numbered-files] [--start-number <n>] [--numbered-files]
[--in-reply-to=Message-Id] [--suffix=.<sfx>] [--in-reply-to=Message-Id] [--suffix=.<sfx>]
[--ignore-if-in-upstream] [--ignore-if-in-upstream]
[--subject-prefix=Subject-Prefix] [--subject-prefix=Subject-Prefix]
[--cc=<email>] [--to=<email>] [--cc=<email>]
[--cover-letter] [--cover-letter]
[<common diff options>] [<common diff options>]
[ <since> | <revision range> ] [ <since> | <revision range> ]
@ -29,7 +30,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.
@ -43,28 +44,28 @@ There are two ways to specify which commits to operate on.
The first rule takes precedence in the case of a single <commit>. To The first rule takes precedence in the case of a single <commit>. To
apply the second rule, i.e., format everything since the beginning of apply the second rule, i.e., format everything since the beginning of
history up until <commit>, use the '\--root' option: "git format-patch history up until <commit>, use the '\--root' option: `git format-patch
\--root <commit>". If you want to format only <commit> itself, you \--root <commit>`. If you want to format only <commit> itself, you
can do this with "git format-patch -1 <commit>". can do this with `git format-patch -1 <commit>`.
By default, each output file is numbered sequentially from 1, and uses the By default, each output file is numbered sequentially from 1, and uses the
first line of the commit message (massaged for pathname safety) as first line of the commit message (massaged for pathname safety) as
the filename. With the --numbered-files option, the output file names the filename. With the `--numbered-files` option, the output file names
will only be numbers, without the first line of the commit appended. will only be numbers, without the first line of the commit appended.
The names of the output files are printed to standard The names of the output files are printed to standard
output, unless the --stdout option is specified. output, unless the `--stdout` option is specified.
If -o is specified, output files are created in <dir>. Otherwise If `-o` is specified, output files are created in <dir>. Otherwise
they are created in the current working directory. they are created in the current working directory.
By default, the subject of a single patch is "[PATCH] First Line" and By default, the subject of a single patch is "[PATCH] First Line" and
the subject when multiple patches are output is "[PATCH n/m] First the subject when multiple patches are output is "[PATCH n/m] First
Line". To force 1/1 to be added for a single patch, use -n. To omit Line". To force 1/1 to be added for a single patch, use `-n`. To omit
patch numbers from the subject, use -N patch numbers from the subject, use `-N`.
If given --thread, 'git-format-patch' will generate In-Reply-To and If given `--thread`, `git-format-patch` will generate `In-Reply-To` and
References headers to make the second and subsequent patch mails appear `References` headers to make the second and subsequent patch mails appear
as replies to the first mail; this also generates a Message-Id header to as replies to the first mail; this also generates a `Message-Id` header to
reference. reference.
OPTIONS OPTIONS
@ -112,7 +113,7 @@ include::diff-options.txt[]
--attach[=<boundary>]:: --attach[=<boundary>]::
Create multipart/mixed attachment, the first part of Create multipart/mixed attachment, the first part of
which is the commit message and the patch itself in the which is the commit message and the patch itself in the
second part, with "Content-Disposition: attachment". second part, with `Content-Disposition: attachment`.
--no-attach:: --no-attach::
Disable the creation of an attachment, overriding the Disable the creation of an attachment, overriding the
@ -121,13 +122,13 @@ include::diff-options.txt[]
--inline[=<boundary>]:: --inline[=<boundary>]::
Create multipart/mixed attachment, the first part of Create multipart/mixed attachment, the first part of
which is the commit message and the patch itself in the which is the commit message and the patch itself in the
second part, with "Content-Disposition: inline". second part, with `Content-Disposition: inline`.
--thread[=<style>]:: --thread[=<style>]::
--no-thread:: --no-thread::
Controls addition of In-Reply-To and References headers to Controls addition of `In-Reply-To` and `References` headers to
make the second and subsequent mails appear as replies to the make the second and subsequent mails appear as replies to the
first. Also controls generation of the Message-Id header to first. Also controls generation of the `Message-Id` header to
reference. reference.
+ +
The optional <style> argument can be either `shallow` or `deep`. The optional <style> argument can be either `shallow` or `deep`.
@ -136,16 +137,16 @@ series, where the head is chosen from the cover letter, the
`\--in-reply-to`, and the first patch mail, in this order. 'deep' `\--in-reply-to`, and the first patch mail, in this order. 'deep'
threading makes every mail a reply to the previous one. threading makes every mail a reply to the previous one.
+ +
The default is --no-thread, unless the 'format.thread' configuration The default is `--no-thread`, unless the 'format.thread' configuration
is set. If --thread is specified without a style, it defaults to the is set. If `--thread` is specified without a style, it defaults to the
style specified by 'format.thread' if any, or else `shallow`. style specified by 'format.thread' if any, or else `shallow`.
+ +
Beware that the default for 'git send-email' is to thread emails Beware that the default for 'git send-email' is to thread emails
itself. If you want 'git format-patch' to take care of hreading, you itself. If you want `git format-patch` to take care of threading, you
will want to ensure that threading is disabled for 'git send-email'. will want to ensure that threading is disabled for `git send-email`.
--in-reply-to=Message-Id:: --in-reply-to=Message-Id::
Make the first mail (or all the mails with --no-thread) appear as a Make the first mail (or all the mails with `--no-thread`) appear as a
reply to the given Message-Id, which avoids breaking threads to reply to the given Message-Id, which avoids breaking threads to
provide a new patch series. provide a new patch series.
@ -160,22 +161,32 @@ will want to ensure that threading is disabled for 'git send-email'.
Instead of the standard '[PATCH]' prefix in the subject Instead of the standard '[PATCH]' prefix in the subject
line, instead use '[<Subject-Prefix>]'. This line, instead use '[<Subject-Prefix>]'. This
allows for useful naming of a patch series, and can be allows for useful naming of a patch series, and can be
combined with the --numbered option. combined with the `--numbered` option.
--to=<email>::
Add a `To:` header to the email headers. This is in addition
to any configured headers, and may be used multiple times.
--cc=<email>:: --cc=<email>::
Add a "Cc:" header to the email headers. This is in addition Add a `Cc:` header to the email headers. This is in addition
to any configured headers, and may be used multiple times. to any configured headers, and may be used multiple times.
--add-header=<header>:: --add-header=<header>::
Add an arbitrary header to the email headers. This is in addition Add an arbitrary header to the email headers. This is in addition
to any configured headers, and may be used multiple times. to any configured headers, and may be used multiple times.
For example, --add-header="Organization: git-foo" For example, `--add-header="Organization: git-foo"`
--cover-letter:: --cover-letter::
In addition to the patches, generate a cover letter file In addition to the patches, generate a cover letter file
containing the shortlog and the overall diffstat. You can containing the shortlog and the overall diffstat. You can
fill in a description in the file before sending it out. fill in a description in the file before sending it out.
--[no]-signature=<signature>::
Add a signature to each message produced. Per RFC 3676 the signature
is separated from the body by a line with '-- ' on it. If the
signature option is omitted the signature defaults to the git version
number.
--suffix=.<sfx>:: --suffix=.<sfx>::
Instead of using `.patch` as the suffix for generated Instead of using `.patch` as the suffix for generated
filenames, use specified suffix. A common alternative is filenames, use specified suffix. A common alternative is
@ -202,8 +213,8 @@ CONFIGURATION
------------- -------------
You can specify extra mail header lines to be added to each message, You can specify extra mail header lines to be added to each message,
defaults for the subject prefix and file suffix, number patches when defaults for the subject prefix and file suffix, number patches when
outputting more than one patch, add "Cc:" headers, configure attachments, outputting more than one patch, add "To" or "Cc:" headers, configure
and sign off patches with configuration variables. attachments, and sign off patches with configuration variables.
------------ ------------
[format] [format]
@ -211,6 +222,7 @@ and sign off patches with configuration variables.
subjectprefix = CHANGE subjectprefix = CHANGE
suffix = .txt suffix = .txt
numbered = auto numbered = auto
to = <email>
cc = <email> cc = <email>
attach [ = mime-boundary-string ] attach [ = mime-boundary-string ]
signoff = true signoff = true
@ -221,7 +233,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

@ -10,7 +10,7 @@ SYNOPSIS
-------- --------
[verse] [verse]
'git fsck' [--tags] [--root] [--unreachable] [--cache] [--no-reflogs] 'git fsck' [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]
[--full] [--strict] [--verbose] [--lost-found] [<object>*] [--[no-]full] [--strict] [--verbose] [--lost-found] [<object>*]
DESCRIPTION DESCRIPTION
----------- -----------
@ -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.
@ -52,7 +52,8 @@ index file, all SHA1 references in .git/refs/*, and all reflogs (unless
or $GIT_DIR/objects/info/alternates, or $GIT_DIR/objects/info/alternates,
and in packed git archives found in $GIT_DIR/objects/pack and in packed git archives found in $GIT_DIR/objects/pack
and corresponding pack subdirectories in alternate and corresponding pack subdirectories in alternate
object pools. object pools. This is now default; you can turn it off
with --no-full.
--strict:: --strict::
Enable more strict checking, namely to catch a file mode Enable more strict checking, namely to catch a file mode
@ -84,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>::
@ -88,6 +88,16 @@ commits prior to the amend or rebase occurring. Since these changes
are not part of the current project most users will want to expire are not part of the current project most users will want to expire
them sooner. This option defaults to '30 days'. them sooner. This option defaults to '30 days'.
The above two configuration variables can be given to a pattern. For
example, this sets non-default expiry values only to remote tracking
branches:
------------
[gc "refs/remotes/*"]
reflogExpire = never
reflogexpireUnreachable = 3 days
------------
The optional configuration variable 'gc.rerereresolved' indicates The optional configuration variable 'gc.rerereresolved' indicates
how long records of conflicted merge you resolved earlier are how long records of conflicted merge you resolved earlier are
kept. This defaults to 60 days. kept. This defaults to 60 days.
@ -97,7 +107,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.
@ -106,7 +116,7 @@ much time is spent optimizing the delta compression of the objects in
the repository when the --aggressive option is specified. The larger the repository when the --aggressive option is specified. The larger
the value, the more time is spent optimizing the delta compression. See the value, the more time is spent optimizing the delta compression. See
the documentation for the --window' option in linkgit:git-repack[1] for the documentation for the --window' option in linkgit:git-repack[1] for
more details. This defaults to 10. more details. This defaults to 250.
The optional configuration variable 'gc.pruneExpire' controls how old The optional configuration variable 'gc.pruneExpire' controls how old
the unreferenced loose objects have to be before they are pruned. The the unreferenced loose objects have to be before they are pruned. The
@ -116,17 +126,24 @@ 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 references 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).
If you are expecting some objects to be collected and they aren't, check If you are expecting some objects to be collected and they aren't, check
all of those locations and decide whether it makes sense in your case to all of those locations and decide whether it makes sense in your case to
remove those references. remove those references.
HOOKS
-----
The 'git gc --auto' command will run the 'pre-auto-gc' hook. See
linkgit:githooks[5] for more information.
SEE ALSO SEE ALSO
-------- --------
linkgit:git-prune[1] linkgit:git-prune[1]

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

@ -9,31 +9,36 @@ git-grep - Print lines matching a pattern
SYNOPSIS SYNOPSIS
-------- --------
[verse] [verse]
'git grep' [--cached] 'git grep' [-a | --text] [-I] [-i | --ignore-case] [-w | --word-regexp]
[-a | --text] [-I] [-i | --ignore-case] [-w | --word-regexp]
[-v | --invert-match] [-h|-H] [--full-name] [-v | --invert-match] [-h|-H] [--full-name]
[-E | --extended-regexp] [-G | --basic-regexp] [-E | --extended-regexp] [-G | --basic-regexp]
[-F | --fixed-strings] [-n] [-F | --fixed-strings] [-n]
[-l | --files-with-matches] [-L | --files-without-match] [-l | --files-with-matches] [-L | --files-without-match]
[(-O | --open-files-in-pager) [<pager>]]
[-z | --null] [-z | --null]
[-c | --count] [--all-match] [-c | --count] [--all-match] [-q | --quiet]
[--color | --no-color] [--max-depth <depth>]
[--color[=<when>] | --no-color]
[-A <post-context>] [-B <pre-context>] [-C <context>] [-A <post-context>] [-B <pre-context>] [-C <context>]
[-f <file>] [-e] <pattern> [-f <file>] [-e] <pattern>
[--and|--or|--not|(|)|-e <pattern>...] [<tree>...] [--and|--or|--not|(|)|-e <pattern>...]
[--] [<path>...] [--cached | --no-index | <tree>...]
[--] [<pathspec>...]
DESCRIPTION DESCRIPTION
----------- -----------
Look for specified patterns in the working tree files, blobs Look for specified patterns in the tracked files in the work tree, blobs
registered in the index file, or given tree objects. registered in the index file, or blobs in given tree objects.
OPTIONS OPTIONS
------- -------
--cached:: --cached::
Instead of searching in the working tree files, check Instead of searching tracked files in the working tree, search
the blobs registered in the index file. blobs registered in the index file.
--no-index::
Search files in the current directory, not just those tracked by git.
-a:: -a::
--text:: --text::
@ -47,6 +52,10 @@ OPTIONS
-I:: -I::
Don't match the pattern in binary files. Don't match the pattern in binary files.
--max-depth <depth>::
For each <pathspec> given on command line, descend at most <depth>
levels of directories. A negative value means no limit.
-w:: -w::
--word-regexp:: --word-regexp::
Match the pattern only at word boundary (either begin at the Match the pattern only at word boundary (either begin at the
@ -93,8 +102,15 @@ 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`.
-O [<pager>]::
--open-files-in-pager [<pager>]::
Open the matching files in the pager (not the output of 'grep').
If the pager happens to be "less" or "vi", and the user
specified only one pattern, the first file is positioned at
the first match automatically.
-z:: -z::
--null:: --null::
@ -106,12 +122,14 @@ OPTIONS
Instead of showing every matched line, show the number of Instead of showing every matched line, show the number of
lines that match. lines that match.
--color:: --color[=<when>]::
Show colored matches. Show colored matches.
The value must be always (the default), never, or auto.
--no-color:: --no-color::
Turn off match highlighting, even when the configuration file Turn off match highlighting, even when the configuration file
gives the default to color output. gives the default to color output.
Same as `--color=never`.
-[ABC] <context>:: -[ABC] <context>::
Show `context` trailing (`A` -- after), or leading (`B` Show `context` trailing (`A` -- after), or leading (`B`
@ -120,7 +138,7 @@ OPTIONS
matches. matches.
-<num>:: -<num>::
A shortcut for specifying -C<num>. A shortcut for specifying `-C<num>`.
-p:: -p::
--show-function:: --show-function::
@ -135,7 +153,7 @@ OPTIONS
-e:: -e::
The next parameter is the pattern. This option has to be The next parameter is the pattern. This option has to be
used for patterns starting with - and should be used in used for patterns starting with `-` and should be used in
scripts passing user input to grep. Multiple patterns are scripts passing user input to grep. Multiple patterns are
combined by 'or'. combined by 'or'.
@ -153,16 +171,29 @@ OPTIONS
this flag is specified to limit the match to files that this flag is specified to limit the match to files that
have lines to match all of them. have lines to match all of them.
`<tree>...`:: -q::
Search blobs in the trees for specified patterns. --quiet::
Do not output matched lines; instead, exit with status 0 when
there is a match and with non-zero status when there isn't.
<tree>...::
Instead of searching tracked files in the working tree, search
blobs in the given trees.
\--:: \--::
Signals the end of options; the rest of the parameters Signals the end of options; the rest of the parameters
are <path> limiters. are <pathspec> limiters.
<pathspec>...::
If given, limit the search to paths matching at least one pattern.
Both leading paths match and glob(7) patterns are supported.
Example Examples
------- --------
git grep 'time_t' \-- '*.[ch]'::
Looks for `time_t` in all tracked .c and .h files in the working
directory and its subdirectories.
git grep -e \'#define\' --and \( -e MAX_PATH -e PATH_MAX \):: git grep -e \'#define\' --and \( -e MAX_PATH -e PATH_MAX \)::
Looks for a line that has `#define` and either `MAX_PATH` or Looks for a line that has `#define` and either `MAX_PATH` or

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

@ -10,7 +10,7 @@ SYNOPSIS
-------- --------
[verse] [verse]
'git hash-object' [-t <type>] [-w] [--path=<file>|--no-filters] [--stdin] [--] <file>... 'git hash-object' [-t <type>] [-w] [--path=<file>|--no-filters] [--stdin] [--] <file>...
'git hash-object' [-t <type>] [-w] --stdin-paths < <list-of-paths> 'git hash-object' [-t <type>] [-w] --stdin-paths [--no-filters] < <list-of-paths>
DESCRIPTION DESCRIPTION
----------- -----------
@ -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

@ -0,0 +1,188 @@
git-http-backend(1)
===================
NAME
----
git-http-backend - Server side implementation of Git over HTTP
SYNOPSIS
--------
[verse]
'git http-backend'
DESCRIPTION
-----------
A simple CGI program to serve the contents of a Git repository to Git
clients accessing the repository over http:// and https:// protocols.
The program supports clients fetching using both the smart HTTP protocol
and the backwards-compatible dumb HTTP protocol, as well as clients
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
'git fetch-pack' and 'git ls-remote' clients, which are invoked from
'git fetch', 'git pull', and 'git clone'. If the client is authenticated,
the `receive-pack` service is enabled, which serves 'git send-pack'
clients, which is invoked from 'git push'.
SERVICES
--------
These services can be enabled/disabled using the per-repository
configuration file:
http.getanyfile::
This serves Git clients older than version 1.6.6 that are unable to use the
upload pack service. When enabled, clients are able to read
any file within the repository, including objects that are
no longer reachable from a branch but are still present.
It is enabled by default, but a repository can disable it
by setting this configuration item to `false`.
http.uploadpack::
This serves 'git fetch-pack' and 'git ls-remote' clients.
It is enabled by default, but a repository can disable it
by setting this configuration item to `false`.
http.receivepack::
This serves 'git send-pack' clients, allowing push. It is
disabled by default for anonymous users, and enabled by
default for users authenticated by the web server. It can be
disabled by setting this item to `false`, or enabled for all
users, including anonymous users, by setting it to `true`.
URL TRANSLATION
---------------
To determine the location of the repository on disk, 'git http-backend'
concatenates the environment variables PATH_INFO, which is 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
set, 'git http-backend' reads PATH_TRANSLATED, which is also set
automatically by the web server.
EXAMPLES
--------
All of the following examples map 'http://$hostname/git/foo/bar.git'
to '/var/www/git/foo/bar.git'.
Apache 2.x::
Ensure mod_cgi, mod_alias, and mod_env are enabled, set
GIT_PROJECT_ROOT (or DocumentRoot) appropriately, and
create a ScriptAlias to the CGI:
+
----------------------------------------------------------------
SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
----------------------------------------------------------------
+
To enable anonymous read access but authenticated write access,
require authorization with a LocationMatch directive:
+
----------------------------------------------------------------
<LocationMatch "^/git/.*/git-receive-pack$">
AuthType Basic
AuthName "Git Access"
Require group committers
...
</LocationMatch>
----------------------------------------------------------------
+
To require authentication for both reads and writes, use a Location
directive around the repository, or one of its parent directories:
+
----------------------------------------------------------------
<Location /git/private>
AuthType Basic
AuthName "Private Git Access"
Require group committers
...
</Location>
----------------------------------------------------------------
+
To serve gitweb at the same url, use a ScriptAliasMatch to only
those URLs that 'git http-backend' can handle, and forward the
rest to gitweb:
+
----------------------------------------------------------------
ScriptAliasMatch \
"(?x)^/git/(.*/(HEAD | \
info/refs | \
objects/(info/[^/]+ | \
[0-9a-f]{2}/[0-9a-f]{38} | \
pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
git-(upload|receive)-pack))$" \
/usr/libexec/git-core/git-http-backend/$1
ScriptAlias /git/ /var/www/cgi-bin/gitweb.cgi/
----------------------------------------------------------------
Accelerated static Apache 2.x::
Similar to the above, but Apache can be used to return static
files that are stored on disk. On many systems this may
be more efficient as Apache can ask the kernel to copy the
file contents from the file system directly to the network:
+
----------------------------------------------------------------
SetEnv GIT_PROJECT_ROOT /var/www/git
AliasMatch ^/git/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$ /var/www/git/$1
AliasMatch ^/git/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /var/www/git/$1
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
----------------------------------------------------------------
+
This can be combined with the gitweb configuration:
+
----------------------------------------------------------------
SetEnv GIT_PROJECT_ROOT /var/www/git
AliasMatch ^/git/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$ /var/www/git/$1
AliasMatch ^/git/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /var/www/git/$1
ScriptAliasMatch \
"(?x)^/git/(.*/(HEAD | \
info/refs | \
objects/info/[^/]+ | \
git-(upload|receive)-pack))$" \
/usr/libexec/git-core/git-http-backend/$1
ScriptAlias /git/ /var/www/cgi-bin/gitweb.cgi/
----------------------------------------------------------------
ENVIRONMENT
-----------
'git http-backend' relies upon the CGI environment variables set
by the invoking web server, including:
* PATH_INFO (if GIT_PROJECT_ROOT is set, otherwise PATH_TRANSLATED)
* REMOTE_USER
* REMOTE_ADDR
* CONTENT_TYPE
* QUERY_STRING
* 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
GIT_COMMITTER_EMAIL to '$\{REMOTE_USER}@http.$\{REMOTE_ADDR\}',
ensuring that any reflogs created by 'git-receive-pack' contain some
identifying information of the remote user who performed the push.
All CGI environment variables are available to each of the hooks
invoked by the 'git-receive-pack'.
Author
------
Written by Shawn O. Pearce <spearce@spearce.org>.
Documentation
--------------
Documentation by Shawn O. Pearce <spearce@spearce.org>.
GIT
---
Part of the linkgit:git[1] suite

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

@ -82,11 +82,11 @@ destination side.
Without '--force', the <src> ref is stored at the remote only if Without '--force', the <src> ref is stored at the remote only if
<dst> does not exist, or <dst> is a proper subset (i.e. an <dst> does not exist, or <dst> is a proper subset (i.e. an
ancestor) of <src>. This check, known as "fast forward check", ancestor) of <src>. This check, known as "fast-forward check",
is performed in order to avoid accidentally overwriting the is performed in order to avoid accidentally overwriting the
remote ref and lose other peoples' commits from there. remote ref and lose other peoples' commits from there.
With '--force', the fast forward check is disabled for all refs. With '--force', the fast-forward check is disabled for all refs.
Optionally, a <ref> parameter can be prefixed with a plus '+' sign Optionally, a <ref> parameter can be prefixed with a plus '+' sign
to disable the fast-forward check only on that ref. to disable the fast-forward check only on that ref.

View file

@ -13,10 +13,12 @@ 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. The command also works with any general mailbox
in which emails have the fields "From", "Date", and "Subject" in
that order.
Typical usage is something like: Typical usage is something like:
@ -71,6 +73,10 @@ imap.preformattedHTML::
option causes Thunderbird to send the patch as a plain/text, option causes Thunderbird to send the patch as a plain/text,
format=fixed email. Default is `false`. format=fixed email. Default is `false`.
imap.authMethod::
Specify authenticate method for authentication with IMAP server.
Current supported method is 'CRAM-MD5' only.
Examples Examples
~~~~~~~~ ~~~~~~~~
@ -118,12 +124,6 @@ Thunderbird in particular is known to be problematic. Thunderbird
users may wish to visit this web page for more information: users may wish to visit this web page for more information:
http://kb.mozillazine.org/Plain_text_e-mail_-_Thunderbird#Completely_plain_email http://kb.mozillazine.org/Plain_text_e-mail_-_Thunderbird#Completely_plain_email
BUGS
----
Doesn't handle lines starting with "From " in the message body.
Author Author
------ ------
Derived from isync 1.0.1 by Mike McCormack. Derived from isync 1.0.1 by Mike McCormack.

View file

@ -43,23 +43,19 @@ 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 Fix a "thin" pack produced by `git pack-objects --thin` (see
"thin" pack, which records objects in deltified form based on linkgit:git-pack-objects[1] for details) by adding the
objects not included in the pack to reduce network traffic. excluded objects the deltified objects are based on to the
Those objects are expected to be present on the receiving end pack. This option only makes sense in conjunction with --stdin.
and they must be included in the pack for that pack to be self
contained and indexable. Without this option any attempt to
index a thin pack will fail. This option only makes sense in
conjunction with --stdin.
--keep:: --keep::
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 +82,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

@ -8,7 +8,7 @@ git-init-db - Creates an empty git repository
SYNOPSIS SYNOPSIS
-------- --------
'git init-db' [-q | --quiet] [--template=<template_directory>] [--shared[=<permissions>]] 'git init-db' [-q | --quiet] [--bare] [--template=<template_directory>] [--shared[=<permissions>]]
DESCRIPTION DESCRIPTION

View file

@ -8,7 +8,7 @@ git-init - Create an empty git repository or reinitialize an existing one
SYNOPSIS SYNOPSIS
-------- --------
'git init' [-q | --quiet] [--bare] [--template=<template_directory>] [--shared[=<permissions>]] 'git init' [-q | --quiet] [--bare] [--template=<template_directory>] [--shared[=<permissions>]] [directory]
OPTIONS OPTIONS
@ -28,14 +28,8 @@ current working directory.
--template=<template_directory>:: --template=<template_directory>::
Provide the directory from which templates will be used. The default template Specify the directory from which templates will be used. (See the "TEMPLATE
directory is `/usr/share/git-core/templates`. DIRECTORY" section below.)
When specified, `<template_directory>` is used as the source of the template
files rather than the default. The template files include some directory
structure, some suggested "exclude patterns", and copies of non-executing
"hook" files. The suggested patterns and hook files are all modifiable and
extensible.
--shared[={false|true|umask|group|all|world|everybody|0xxx}]:: --shared[={false|true|umask|group|all|world|everybody|0xxx}]::
@ -74,6 +68,9 @@ By default, the configuration flag receive.denyNonFastForwards is enabled
in shared repositories, so that you cannot force a non fast-forwarding push in shared repositories, so that you cannot force a non fast-forwarding push
into it. into it.
If you name a (possibly non-existent) directory at the end of the command
line, the command is run inside the directory (possibly after creating it).
-- --
@ -92,17 +89,36 @@ 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
setting the configuration variables. The old name is retained setting the configuration variables. The old name is retained
for backward compatibility reasons. for backward compatibility reasons.
TEMPLATE DIRECTORY
------------------
The template directory contains files and directories that will be copied to
the `$GIT_DIR` after it is created.
The template directory used will (in order):
- The argument given with the `--template` option.
- The contents of the `$GIT_TEMPLATE_DIR` environment variable.
- The `init.templatedir` configuration variable.
- The default template directory: `/usr/share/git-core/templates`.
The default template directory includes some directory structure, some
suggested "exclude patterns", and copies of sample "hook" files.
The suggested patterns and hook files are all modifiable and extensible.
EXAMPLES EXAMPLES
-------- --------

View file

@ -29,7 +29,7 @@ OPTIONS
The HTTP daemon command-line that will be executed. The HTTP daemon command-line that will be executed.
Command-line options may be specified here, and the Command-line options may be specified here, and the
configuration file will be added at the end of the command-line. configuration file will be added at the end of the command-line.
Currently lighttpd, apache2 and webrick are supported. Currently apache2, lighttpd, mongoose, plackup and webrick are supported.
(Default: lighttpd) (Default: lighttpd)
-m:: -m::
@ -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.
@ -37,7 +37,8 @@ include::diff-options.txt[]
and <until>, see "SPECIFYING REVISIONS" section in and <until>, see "SPECIFYING REVISIONS" section in
linkgit:git-rev-parse[1]. linkgit:git-rev-parse[1].
--decorate[=short|full]:: --no-decorate::
--decorate[=short|full|no]::
Print out the ref names of any commits that are shown. If 'short' is Print out the ref names of any commits that are shown. If 'short' is
specified, the ref name prefixes 'refs/heads/', 'refs/tags/' and specified, the ref name prefixes 'refs/heads/', 'refs/tags/' and
'refs/remotes/' will not be printed. If 'full' is specified, the 'refs/remotes/' will not be printed. If 'full' is specified, the
@ -56,7 +57,7 @@ include::diff-options.txt[]
commits, and doesn't limit diff for those commits. commits, and doesn't limit diff for those commits.
--follow:: --follow::
Continue listing the history of a file beyond renames. Continue listing the history of a file beyond renames/copies.
--log-size:: --log-size::
Before the log message print out its size in bytes. Intended Before the log message print out its size in bytes. Intended
@ -107,11 +108,73 @@ 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.
git log -p -m --first-parent::
Shows the history including change diffs, but only from the
"main branch" perspective, skipping commits that come from merged
branches, and showing full diffs of changes introduced by the merges.
This makes sense only when following a strict policy of merging all
topic branches when staying on a single integration branch.
Discussion Discussion
---------- ----------
include::i18n.txt[] include::i18n.txt[]
Configuration
-------------
See linkgit:git-config[1] for core variables and linkgit:git-diff[1]
for settings related to diff generation.
format.pretty::
Default for the `--format` option. (See "PRETTY FORMATS" above.)
Defaults to "medium".
i18n.logOutputEncoding::
Encoding to use when displaying logs. (See "Discussion", above.)
Defaults to the value of `i18n.commitEncoding` if set, UTF-8
otherwise.
log.date::
Default format for human-readable dates. (Compare the
`--date` option.) Defaults to "default", which means to write
dates like `Sat May 8 19:35:34 2010 -0500`.
log.showroot::
If `false`, 'git log' and related commands will not treat the
initial commit as a big creation event. Any root commits in
`git log -p` output would be shown without a diff attached.
The default is `true`.
mailmap.file::
See linkgit:git-shortlog[1].
notes.displayRef::
Which refs, in addition to the default set by `core.notesRef`
or 'GIT_NOTES_REF', to read notes from when showing commit
messages with the 'log' family of commands. See
linkgit:git-notes[1].
+
May be an unabbreviated ref name or a glob and may be specified
multiple times. A warning will be issued for refs that do not exist,
but a glob that does not match any refs is silently ignored.
+
This setting can be disabled by the `--no-standard-notes` option,
overridden by the 'GIT_NOTES_DISPLAY_REF' environment variable,
and supplemented by the `--show-notes` option.
Author Author
------ ------

View file

@ -44,12 +44,14 @@ OPTIONS
-o:: -o::
--others:: --others::
Show other files in the output Show other (i.e. untracked) files in the output
-i:: -i::
--ignored:: --ignored::
Show ignored files in the output. Show only ignored files in the output. When showing files in the
Note that this also reverses any exclude list present. index, print only those matched by an exclude pattern. When
showing "other" files, show only those matched by an exclude
pattern.
-s:: -s::
--stage:: --stage::
@ -107,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
@ -138,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,
@ -160,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.
@ -176,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

@ -8,7 +8,7 @@ git-mailinfo - Extracts patch and authorship from a single e-mail message
SYNOPSIS SYNOPSIS
-------- --------
'git mailinfo' [-k] [-u | --encoding=<encoding> | -n] <msg> <patch> 'git mailinfo' [-k|-b] [-u | --encoding=<encoding> | -n] [--scissors] <msg> <patch>
DESCRIPTION DESCRIPTION
@ -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,25 +30,49 @@ 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::
When -k is not in effect, all leading strings bracketed with '['
and ']' pairs are stripped. This option limits the stripping to
only the pairs whose bracketed string contains the word "PATCH".
-u:: -u::
The commit log message, author name and author email are The commit log message, author name and author email are
taken from the e-mail, and after minimally decoding MIME taken from the e-mail, and after minimally decoding MIME
transfer encoding, re-coded in UTF-8 by transliterating transfer encoding, re-coded in the charset specified by
i18n.commitencoding (defaulting to UTF-8) by transliterating
them. This used to be optional but now it is the default. them. This used to be optional but now it is the default.
+ +
Note that the patch is always used as-is without charset Note that the patch is always used as-is without charset
conversion, even with this flag. conversion, even with this flag.
--encoding=<encoding>:: --encoding=<encoding>::
Similar to -u but if the local convention is different Similar to -u. But when re-coding, the charset specified here is
from what is specified by i18n.commitencoding, this flag used instead of the one specified by i18n.commitencoding or UTF-8.
can be used to override it.
-n:: -n::
Disable all charset re-coding of the metadata. Disable all charset re-coding of the metadata.
--scissors::
Remove everything in body before a scissors line. A line that
mainly consists of scissors (either ">8" or "8<") and perforation
(dash "-") marks is called a scissors line, and is used to request
the reader to cut the message at that line. If such a line
appears in the body of the message before the patch, everything
before it (including the scissors line itself) is ignored when
this option is used.
+
This is useful if you want to begin your message in a discussion thread
with comments and suggestions on the message you are responding to, and to
conclude it with a patch submission, separating the discussion and the
beginning of the proposed commit log message with a scissors line.
+
This can enabled by default with the configuration option mailinfo.scissors.
--no-scissors::
Ignore scissors lines. Useful for overriding mailinfo.scissors settings.
<msg>:: <msg>::
The commit log message extracted from e-mail, usually The commit log message extracted from e-mail, usually
except the title line which comes from e-mail Subject. except the title line which comes from e-mail Subject.

View file

@ -7,7 +7,7 @@ git-mailsplit - Simple UNIX mbox splitter program
SYNOPSIS SYNOPSIS
-------- --------
'git mailsplit' [-b] [-f<nn>] [-d<prec>] -o<directory> [--] [<mbox>|<Maildir>...] 'git mailsplit' [-b] [-f<nn>] [-d<prec>] [--keep-cr] -o<directory> [--] [<mbox>|<Maildir>...]
DESCRIPTION DESCRIPTION
----------- -----------
@ -43,6 +43,9 @@ OPTIONS
Skip the first <nn> numbers, for example if -f3 is specified, Skip the first <nn> numbers, for example if -f3 is specified,
start the numbering with 0004. start the numbering with 0004.
--keep-cr::
Do not remove `\r` from lines ending with `\r\n`.
Author Author
------ ------
Written by Linus Torvalds <torvalds@osdl.org> Written by Linus Torvalds <torvalds@osdl.org>

View file

@ -8,12 +8,12 @@ git-merge-base - Find as good common ancestors as possible for a merge
SYNOPSIS SYNOPSIS
-------- --------
'git merge-base' [--all] <commit> <commit>... 'git merge-base' [-a|--all] <commit> <commit>...
DESCRIPTION DESCRIPTION
----------- -----------
'git-merge-base' finds best common ancestor(s) between two commits to use 'git merge-base' finds best common ancestor(s) between two commits to use
in a three-way merge. One common ancestor is 'better' than another common in a three-way merge. One common ancestor is 'better' than another common
ancestor if the latter is an ancestor of the former. A common ancestor ancestor if the latter is an ancestor of the former. A common ancestor
that does not have any better common ancestor is a 'best common that does not have any better common ancestor is a 'best common
@ -27,8 +27,13 @@ commits on the command line. As the most common special case, specifying only
two commits on the command line means computing the merge base between two commits on the command line means computing the merge base between
the given two commits. the given two commits.
As a consequence, the 'merge base' is not necessarily contained in each of the
commit arguments if more than two commits are specified. This is different
from linkgit:git-show-branch[1] when used with the `--merge-base` option.
OPTIONS OPTIONS
------- -------
-a::
--all:: --all::
Output all merge bases for the commits, instead of just one. Output all merge bases for the commits, instead of just one.

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|--union] [-p|--stdout] [-q|--quiet] [--marker-size=<n>]
<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,15 @@ 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`, `--theirs`, or `--union` option is in effect,
however, these conflicts are resolved favouring lines from `<current-file>`,
lines from `<other-file>`, or lines from both respectively. The length of the
conflict markers can be given with the `--marker-size` option.
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 +66,12 @@ OPTIONS
-q:: -q::
Quiet; do not warn about conflicts. Quiet; do not warn about conflicts.
--ours::
--theirs::
--union::
Instead of leaving conflicts in the file, resolve conflicts
favouring our (or their or both) side of the lines.
EXAMPLES EXAMPLES
-------- --------

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