Compare commits
96 Commits
v2.23.0-rc
...
v2.21.4
Author | SHA1 | Date | |
---|---|---|---|
c735d7470e | |||
b1726b1a38 | |||
8b1a5f33d3 | |||
804963848e | |||
9fb2a1fb08 | |||
fb049fd85b | |||
6eed462c8f | |||
9b77cec89b | |||
6b82d3eea6 | |||
22539ec3b5 | |||
0d58fef58a | |||
684dd4c2b4 | |||
9206d27eb5 | |||
041bc65923 | |||
76b54ee9b9 | |||
ba6f0905fd | |||
df5be6dc3f | |||
1a3609e402 | |||
e7fab62b73 | |||
c44088ecc4 | |||
fe29a9b7b0 | |||
a2b26ffb1a | |||
8ba8ed568e | |||
24036686c4 | |||
73aafe9bc2 | |||
a88dbd2f8c | |||
fe22686494 | |||
d1259ce117 | |||
a5979d7009 | |||
21a3e5016b | |||
c42c0f1297 | |||
07259e74ec | |||
c716fe4bd9 | |||
17f1c0b8c7 | |||
9a6bbee800 | |||
367f12b7e9 | |||
20c71bcf67 | |||
7d8b676992 | |||
d9061ed9da | |||
04522edbd4 | |||
49f7a76d57 | |||
e2ba3d6f6d | |||
fc346cb292 | |||
4cd1cf31ef | |||
c154745074 | |||
4cfc47de25 | |||
d851d94151 | |||
caccc527ca | |||
7c9fbda6e2 | |||
9877106b01 | |||
14af7ed5a9 | |||
a5ab8d0317 | |||
bb92255ebe | |||
bdfef0492c | |||
eb288bc455 | |||
68440496c7 | |||
9ac92fed5b | |||
7cdafcaacf | |||
e904deb89d | |||
d3ac8c3f27 | |||
66d2a6159f | |||
2ddcccf97a | |||
65d30a19de | |||
5532ebdeb7 | |||
76a681ce9c | |||
dd53ea7220 | |||
f82a97eb91 | |||
7f3551dd68 | |||
d2c84dad1c | |||
379e51d1ae | |||
817ddd64c2 | |||
cc756edda6 | |||
7530a6287e | |||
35edce2056 | |||
55953c77c0 | |||
ad15592529 | |||
a8dee3ca61 | |||
9102f958ee | |||
91bd46588e | |||
6d8684161e | |||
3a85dc7d53 | |||
7c3745fc61 | |||
288a74bcd2 | |||
a62f9d1ace | |||
4778452597 | |||
a7b1ad3b05 | |||
525e7fba78 | |||
e1d911dd4c | |||
0060fd1511 | |||
a52ed76142 | |||
68061e3470 | |||
019683025f | |||
e075dba372 | |||
11e934d56e | |||
816f806786 | |||
f94804c1f2 |
@ -148,21 +148,8 @@ SpacesInSquareBrackets: false
|
||||
Cpp11BracedListStyle: false
|
||||
|
||||
# A list of macros that should be interpreted as foreach loops instead of as
|
||||
# function calls. Taken from:
|
||||
# git grep -h '^#define [^[:space:]]*for_each[^[:space:]]*(' \
|
||||
# | sed "s,^#define \([^[:space:]]*for_each[^[:space:]]*\)(.*$, - '\1'," \
|
||||
# | sort | uniq
|
||||
ForEachMacros:
|
||||
- 'for_each_abbrev'
|
||||
- 'for_each_builtin'
|
||||
- 'for_each_string_list_item'
|
||||
- 'for_each_ut'
|
||||
- 'for_each_wanted_builtin'
|
||||
- 'list_for_each'
|
||||
- 'list_for_each_dir'
|
||||
- 'list_for_each_prev'
|
||||
- 'list_for_each_prev_safe'
|
||||
- 'list_for_each_safe'
|
||||
# function calls.
|
||||
ForEachMacros: ['for_each_string_list_item']
|
||||
|
||||
# The maximum number of consecutive empty lines to keep.
|
||||
MaxEmptyLinesToKeep: 1
|
||||
|
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -5,7 +5,6 @@
|
||||
*.pl eof=lf diff=perl
|
||||
*.pm eol=lf diff=perl
|
||||
*.py eol=lf diff=python
|
||||
*.bat eol=crlf
|
||||
/Documentation/**/*.txt eol=lf
|
||||
/command-list.txt eol=lf
|
||||
/GIT-VERSION-GEN eol=lf
|
||||
|
2
.github/CONTRIBUTING.md
vendored
2
.github/CONTRIBUTING.md
vendored
@ -5,7 +5,7 @@ Git community does not use github.com for their contributions. Instead, we use
|
||||
a mailing list (git@vger.kernel.org) for code submissions, code
|
||||
reviews, and bug reports.
|
||||
|
||||
Nevertheless, you can use [GitGitGadget](https://gitgitgadget.github.io/) to
|
||||
Nevertheless, you can use [submitGit](http://submitgit.herokuapp.com/) to
|
||||
conveniently send your Pull Requests commits to our mailing list.
|
||||
|
||||
Please read ["A note from the maintainer"](https://git.kernel.org/pub/scm/git/git.git/plain/MaintNotes?h=todo)
|
||||
|
4
.github/PULL_REQUEST_TEMPLATE.md
vendored
4
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,7 +1,7 @@
|
||||
Thanks for taking the time to contribute to Git! Please be advised that the
|
||||
Git community does not use github.com for their contributions. Instead, we use
|
||||
a mailing list (git@vger.kernel.org) for code submissions, code reviews, and
|
||||
bug reports. Nevertheless, you can use GitGitGadget (https://gitgitgadget.github.io/)
|
||||
to conveniently send your Pull Requests commits to our mailing list.
|
||||
bug reports. Nevertheless, you can use submitGit to conveniently send your Pull
|
||||
Requests commits to our mailing list.
|
||||
|
||||
Please read the "guidelines for contributing" linked above!
|
||||
|
14
.gitignore
vendored
14
.gitignore
vendored
@ -58,7 +58,6 @@
|
||||
/git-difftool
|
||||
/git-difftool--helper
|
||||
/git-describe
|
||||
/git-env--helper
|
||||
/git-fast-export
|
||||
/git-fast-import
|
||||
/git-fetch
|
||||
@ -83,7 +82,7 @@
|
||||
/git-init-db
|
||||
/git-interpret-trailers
|
||||
/git-instaweb
|
||||
/git-legacy-stash
|
||||
/git-legacy-rebase
|
||||
/git-log
|
||||
/git-ls-files
|
||||
/git-ls-remote
|
||||
@ -123,6 +122,9 @@
|
||||
/git-range-diff
|
||||
/git-read-tree
|
||||
/git-rebase
|
||||
/git-rebase--am
|
||||
/git-rebase--common
|
||||
/git-rebase--interactive
|
||||
/git-rebase--preserve-merges
|
||||
/git-receive-pack
|
||||
/git-reflog
|
||||
@ -133,6 +135,7 @@
|
||||
/git-remote-ftps
|
||||
/git-remote-fd
|
||||
/git-remote-ext
|
||||
/git-remote-testgit
|
||||
/git-remote-testpy
|
||||
/git-remote-testsvn
|
||||
/git-repack
|
||||
@ -140,7 +143,6 @@
|
||||
/git-request-pull
|
||||
/git-rerere
|
||||
/git-reset
|
||||
/git-restore
|
||||
/git-rev-list
|
||||
/git-rev-parse
|
||||
/git-revert
|
||||
@ -165,7 +167,6 @@
|
||||
/git-submodule
|
||||
/git-submodule--helper
|
||||
/git-svn
|
||||
/git-switch
|
||||
/git-symbolic-ref
|
||||
/git-tag
|
||||
/git-unpack-file
|
||||
@ -226,11 +227,6 @@
|
||||
*.user
|
||||
*.idb
|
||||
*.pdb
|
||||
*.ilk
|
||||
*.iobj
|
||||
*.ipdb
|
||||
*.dll
|
||||
.vs/
|
||||
/Debug/
|
||||
/Release/
|
||||
*.dSYM
|
||||
|
10
.travis.yml
10
.travis.yml
@ -21,10 +21,16 @@ matrix:
|
||||
compiler:
|
||||
addons:
|
||||
before_install:
|
||||
- env: jobname=linux-gcc-4.8
|
||||
- env: jobname=Windows
|
||||
os: linux
|
||||
dist: trusty
|
||||
compiler:
|
||||
addons:
|
||||
before_install:
|
||||
script:
|
||||
- >
|
||||
test "$TRAVIS_REPO_SLUG" != "git/git" ||
|
||||
ci/run-windows-build.sh $TRAVIS_BRANCH $(git rev-parse HEAD)
|
||||
after_failure:
|
||||
- env: jobname=Linux32
|
||||
os: linux
|
||||
compiler:
|
||||
|
2
Documentation/.gitignore
vendored
2
Documentation/.gitignore
vendored
@ -13,5 +13,3 @@ mergetools-*.txt
|
||||
manpage-base-url.xsl
|
||||
SubmittingPatches.txt
|
||||
tmp-doc-diff/
|
||||
GIT-ASCIIDOCFLAGS
|
||||
/GIT-EXCLUDED-PROGRAMS
|
||||
|
@ -195,30 +195,10 @@ For C programs:
|
||||
by e.g. "echo DEVELOPER=1 >>config.mak".
|
||||
|
||||
- We try to support a wide range of C compilers to compile Git with,
|
||||
including old ones. You should not use features from newer C
|
||||
standard, even if your compiler groks them.
|
||||
including old ones. That means that you should not use C99
|
||||
initializers, even if a lot of compilers grok it.
|
||||
|
||||
There are a few exceptions to this guideline:
|
||||
|
||||
. since early 2012 with e1327023ea, we have been using an enum
|
||||
definition whose last element is followed by a comma. This, like
|
||||
an array initializer that ends with a trailing comma, can be used
|
||||
to reduce the patch noise when adding a new identifer at the end.
|
||||
|
||||
. since mid 2017 with cbc0f81d, we have been using designated
|
||||
initializers for struct (e.g. "struct t v = { .val = 'a' };").
|
||||
|
||||
. since mid 2017 with 512f41cf, we have been using designated
|
||||
initializers for array (e.g. "int array[10] = { [5] = 2 }").
|
||||
|
||||
These used to be forbidden, but we have not heard any breakage
|
||||
report, and they are assumed to be safe.
|
||||
|
||||
- Variables have to be declared at the beginning of the block, before
|
||||
the first statement (i.e. -Wdeclaration-after-statement).
|
||||
|
||||
- Declaring a variable in the for loop "for (int i = 0; i < 10; i++)"
|
||||
is still not allowed in this codebase.
|
||||
- Variables have to be declared at the beginning of the block.
|
||||
|
||||
- NULL pointers shall be written as NULL, not as 0.
|
||||
|
||||
@ -432,12 +412,6 @@ For C programs:
|
||||
must be declared with "extern" in header files. However, function
|
||||
declarations should not use "extern", as that is already the default.
|
||||
|
||||
- You can launch gdb around your program using the shorthand GIT_DEBUGGER.
|
||||
Run `GIT_DEBUGGER=1 ./bin-wrappers/git foo` to simply use gdb as is, or
|
||||
run `GIT_DEBUGGER="<debugger> <debugger-args>" ./bin-wrappers/git foo` to
|
||||
use your own debugger and arguments. Example: `GIT_DEBUGGER="ddd --gdb"
|
||||
./bin-wrappers/git log` (See `wrap-for-bin.sh`.)
|
||||
|
||||
For Perl programs:
|
||||
|
||||
- Most of the C guidelines above apply.
|
||||
@ -606,14 +580,11 @@ Writing Documentation:
|
||||
or commands:
|
||||
|
||||
Literal examples (e.g. use of command-line options, command names,
|
||||
branch names, URLs, pathnames (files and directories), configuration and
|
||||
environment variables) must be typeset in monospace (i.e. wrapped with
|
||||
backticks):
|
||||
branch names, configuration and environment variables) must be
|
||||
typeset in monospace (i.e. wrapped with backticks):
|
||||
`--pretty=oneline`
|
||||
`git rev-list`
|
||||
`remote.pushDefault`
|
||||
`http://git.example.com`
|
||||
`.git/config`
|
||||
`GIT_DIR`
|
||||
`HEAD`
|
||||
|
||||
|
@ -7,14 +7,12 @@ ARTICLES =
|
||||
SP_ARTICLES =
|
||||
OBSOLETE_HTML =
|
||||
|
||||
-include GIT-EXCLUDED-PROGRAMS
|
||||
|
||||
MAN1_TXT += $(filter-out \
|
||||
$(patsubst %,%.txt,$(EXCLUDED_PROGRAMS)) \
|
||||
$(addsuffix .txt, $(ARTICLES) $(SP_ARTICLES)), \
|
||||
$(wildcard git-*.txt))
|
||||
MAN1_TXT += git.txt
|
||||
MAN1_TXT += gitk.txt
|
||||
MAN1_TXT += gitremote-helpers.txt
|
||||
MAN1_TXT += gitweb.txt
|
||||
|
||||
MAN5_TXT += gitattributes.txt
|
||||
@ -32,7 +30,6 @@ MAN7_TXT += gitdiffcore.txt
|
||||
MAN7_TXT += giteveryday.txt
|
||||
MAN7_TXT += gitglossary.txt
|
||||
MAN7_TXT += gitnamespaces.txt
|
||||
MAN7_TXT += gitremote-helpers.txt
|
||||
MAN7_TXT += gitrevisions.txt
|
||||
MAN7_TXT += gitsubmodules.txt
|
||||
MAN7_TXT += gittutorial-2.txt
|
||||
@ -76,7 +73,6 @@ SP_ARTICLES += howto/maintain-git
|
||||
API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt)))
|
||||
SP_ARTICLES += $(API_DOCS)
|
||||
|
||||
TECH_DOCS += MyFirstContribution
|
||||
TECH_DOCS += SubmittingPatches
|
||||
TECH_DOCS += technical/hash-function-transition
|
||||
TECH_DOCS += technical/http-protocol
|
||||
@ -335,15 +331,6 @@ mergetools-list.made: ../git-mergetool--lib.sh $(wildcard ../mergetools/*)
|
||||
show_tool_names can_merge "* " || :' >mergetools-merge.txt && \
|
||||
date >$@
|
||||
|
||||
TRACK_ASCIIDOCFLAGS = $(subst ','\'',$(ASCIIDOC_COMMON):$(ASCIIDOC_HTML):$(ASCIIDOC_DOCBOOK))
|
||||
|
||||
GIT-ASCIIDOCFLAGS: FORCE
|
||||
@FLAGS='$(TRACK_ASCIIDOCFLAGS)'; \
|
||||
if test x"$$FLAGS" != x"`cat GIT-ASCIIDOCFLAGS 2>/dev/null`" ; then \
|
||||
echo >&2 " * new asciidoc flags"; \
|
||||
echo "$$FLAGS" >GIT-ASCIIDOCFLAGS; \
|
||||
fi
|
||||
|
||||
clean:
|
||||
$(RM) *.xml *.xml+ *.html *.html+ *.1 *.5 *.7
|
||||
$(RM) *.texi *.texi+ *.texi++ git.info gitman.info
|
||||
@ -353,14 +340,13 @@ clean:
|
||||
$(RM) SubmittingPatches.txt
|
||||
$(RM) $(cmds_txt) $(mergetools_txt) *.made
|
||||
$(RM) manpage-base-url.xsl
|
||||
$(RM) GIT-ASCIIDOCFLAGS
|
||||
|
||||
$(MAN_HTML): %.html : %.txt asciidoc.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
||||
$(MAN_HTML): %.html : %.txt asciidoc.conf
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
$(TXT_TO_HTML) -d manpage -o $@+ $< && \
|
||||
mv $@+ $@
|
||||
|
||||
$(OBSOLETE_HTML): %.html : %.txto asciidoc.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
||||
$(OBSOLETE_HTML): %.html : %.txto asciidoc.conf
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
$(TXT_TO_HTML) -o $@+ $< && \
|
||||
mv $@+ $@
|
||||
@ -368,16 +354,16 @@ $(OBSOLETE_HTML): %.html : %.txto asciidoc.conf asciidoctor-extensions.rb GIT-AS
|
||||
manpage-base-url.xsl: manpage-base-url.xsl.in
|
||||
$(QUIET_GEN)sed "s|@@MAN_BASE_URL@@|$(MAN_BASE_URL)|" $< > $@
|
||||
|
||||
%.1 %.5 %.7 : %.xml manpage-base-url.xsl $(wildcard manpage*.xsl)
|
||||
%.1 %.5 %.7 : %.xml manpage-base-url.xsl
|
||||
$(QUIET_XMLTO)$(RM) $@ && \
|
||||
$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
|
||||
|
||||
%.xml : %.txt asciidoc.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
||||
%.xml : %.txt asciidoc.conf
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
$(TXT_TO_XML) -d manpage -o $@+ $< && \
|
||||
mv $@+ $@
|
||||
|
||||
user-manual.xml: user-manual.txt user-manual.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
||||
user-manual.xml: user-manual.txt user-manual.conf
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
$(TXT_TO_XML) -d book -o $@+ $< && \
|
||||
mv $@+ $@
|
||||
@ -387,8 +373,7 @@ technical/api-index.txt: technical/api-index-skel.txt \
|
||||
$(QUIET_GEN)cd technical && '$(SHELL_PATH_SQ)' ./api-index.sh
|
||||
|
||||
technical/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../
|
||||
$(patsubst %,%.html,$(API_DOCS) technical/api-index $(TECH_DOCS)): %.html : %.txt \
|
||||
asciidoc.conf GIT-ASCIIDOCFLAGS
|
||||
$(patsubst %,%.html,$(API_DOCS) technical/api-index $(TECH_DOCS)): %.html : %.txt asciidoc.conf
|
||||
$(QUIET_ASCIIDOC)$(TXT_TO_HTML) $*.txt
|
||||
|
||||
SubmittingPatches.txt: SubmittingPatches
|
||||
@ -445,7 +430,7 @@ $(patsubst %,%.html,$(ARTICLES)) : %.html : %.txt
|
||||
WEBDOC_DEST = /pub/software/scm/git/docs
|
||||
|
||||
howto/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../
|
||||
$(patsubst %.txt,%.html,$(wildcard howto/*.txt)): %.html : %.txt GIT-ASCIIDOCFLAGS
|
||||
$(patsubst %.txt,%.html,$(wildcard howto/*.txt)): %.html : %.txt
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
sed -e '1,/^$$/d' $< | \
|
||||
$(TXT_TO_HTML) - >$@+ && \
|
||||
|
File diff suppressed because it is too large
Load Diff
54
Documentation/RelNotes/2.14.6.txt
Normal file
54
Documentation/RelNotes/2.14.6.txt
Normal file
@ -0,0 +1,54 @@
|
||||
Git v2.14.6 Release Notes
|
||||
=========================
|
||||
|
||||
This release addresses the security issues CVE-2019-1348,
|
||||
CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352,
|
||||
CVE-2019-1353, CVE-2019-1354, and CVE-2019-1387.
|
||||
|
||||
Fixes since v2.14.5
|
||||
-------------------
|
||||
|
||||
* CVE-2019-1348:
|
||||
The --export-marks option of git fast-import is exposed also via
|
||||
the in-stream command feature export-marks=... and it allows
|
||||
overwriting arbitrary paths.
|
||||
|
||||
* CVE-2019-1349:
|
||||
When submodules are cloned recursively, under certain circumstances
|
||||
Git could be fooled into using the same Git directory twice. We now
|
||||
require the directory to be empty.
|
||||
|
||||
* CVE-2019-1350:
|
||||
Incorrect quoting of command-line arguments allowed remote code
|
||||
execution during a recursive clone in conjunction with SSH URLs.
|
||||
|
||||
* CVE-2019-1351:
|
||||
While the only permitted drive letters for physical drives on
|
||||
Windows are letters of the US-English alphabet, this restriction
|
||||
does not apply to virtual drives assigned via subst <letter>:
|
||||
<path>. Git mistook such paths for relative paths, allowing writing
|
||||
outside of the worktree while cloning.
|
||||
|
||||
* CVE-2019-1352:
|
||||
Git was unaware of NTFS Alternate Data Streams, allowing files
|
||||
inside the .git/ directory to be overwritten during a clone.
|
||||
|
||||
* CVE-2019-1353:
|
||||
When running Git in the Windows Subsystem for Linux (also known as
|
||||
"WSL") while accessing a working directory on a regular Windows
|
||||
drive, none of the NTFS protections were active.
|
||||
|
||||
* CVE-2019-1354:
|
||||
Filenames on Linux/Unix can contain backslashes. On Windows,
|
||||
backslashes are directory separators. Git did not use to refuse to
|
||||
write out tracked files with such filenames.
|
||||
|
||||
* CVE-2019-1387:
|
||||
Recursive clones are currently affected by a vulnerability that is
|
||||
caused by too-lax validation of submodule names, allowing very
|
||||
targeted attacks via remote code execution in recursive clones.
|
||||
|
||||
Credit for finding these vulnerabilities goes to Microsoft Security
|
||||
Response Center, in particular to Nicolas Joly. The `fast-import`
|
||||
fixes were provided by Jeff King, the other fixes by Johannes
|
||||
Schindelin with help from Garima Singh.
|
11
Documentation/RelNotes/2.15.4.txt
Normal file
11
Documentation/RelNotes/2.15.4.txt
Normal file
@ -0,0 +1,11 @@
|
||||
Git v2.15.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.14.6 to address
|
||||
the security issues CVE-2019-1348, CVE-2019-1349, CVE-2019-1350,
|
||||
CVE-2019-1351, CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, and
|
||||
CVE-2019-1387; see the release notes for that version for details.
|
||||
|
||||
In conjunction with a vulnerability that was fixed in v2.20.2,
|
||||
`.gitmodules` is no longer allowed to contain entries of the form
|
||||
`submodule.<name>.update=!command`.
|
8
Documentation/RelNotes/2.16.6.txt
Normal file
8
Documentation/RelNotes/2.16.6.txt
Normal file
@ -0,0 +1,8 @@
|
||||
Git v2.16.6 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.14.6 and in
|
||||
v2.15.4 addressing the security issues CVE-2019-1348, CVE-2019-1349,
|
||||
CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, CVE-2019-1353,
|
||||
CVE-2019-1354, and CVE-2019-1387; see the release notes for those
|
||||
versions for details.
|
12
Documentation/RelNotes/2.17.3.txt
Normal file
12
Documentation/RelNotes/2.17.3.txt
Normal file
@ -0,0 +1,12 @@
|
||||
Git v2.17.3 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.14.6 and in
|
||||
v2.15.4 addressing the security issues CVE-2019-1348, CVE-2019-1349,
|
||||
CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, CVE-2019-1353,
|
||||
CVE-2019-1354, and CVE-2019-1387; see the release notes for those
|
||||
versions for details.
|
||||
|
||||
In addition, `git fsck` was taught to identify `.gitmodules` entries
|
||||
of the form `submodule.<name>.update=!command`, which have been
|
||||
disallowed in v2.15.4.
|
16
Documentation/RelNotes/2.17.4.txt
Normal file
16
Documentation/RelNotes/2.17.4.txt
Normal file
@ -0,0 +1,16 @@
|
||||
Git v2.17.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release is to address the security issue: CVE-2020-5260
|
||||
|
||||
Fixes since v2.17.3
|
||||
-------------------
|
||||
|
||||
* With a crafted URL that contains a newline in it, the credential
|
||||
helper machinery can be fooled to give credential information for
|
||||
a wrong host. The attack has been made impossible by forbidding
|
||||
a newline character in any value passed via the credential
|
||||
protocol.
|
||||
|
||||
Credit for finding the vulnerability goes to Felix Wilhelm of Google
|
||||
Project Zero.
|
22
Documentation/RelNotes/2.17.5.txt
Normal file
22
Documentation/RelNotes/2.17.5.txt
Normal file
@ -0,0 +1,22 @@
|
||||
Git v2.17.5 Release Notes
|
||||
=========================
|
||||
|
||||
This release is to address a security issue: CVE-2020-11008
|
||||
|
||||
Fixes since v2.17.4
|
||||
-------------------
|
||||
|
||||
* With a crafted URL that contains a newline or empty host, or lacks
|
||||
a scheme, the credential helper machinery can be fooled into
|
||||
providing credential information that is not appropriate for the
|
||||
protocol in use and host being contacted.
|
||||
|
||||
Unlike the vulnerability CVE-2020-5260 fixed in v2.17.4, the
|
||||
credentials are not for a host of the attacker's choosing; instead,
|
||||
they are for some unspecified host (based on how the configured
|
||||
credential helper handles an absent "host" parameter).
|
||||
|
||||
The attack has been made impossible by refusing to work with
|
||||
under-specified credential patterns.
|
||||
|
||||
Credit for finding the vulnerability goes to Carlo Arenas.
|
16
Documentation/RelNotes/2.17.6.txt
Normal file
16
Documentation/RelNotes/2.17.6.txt
Normal file
@ -0,0 +1,16 @@
|
||||
Git v2.17.6 Release Notes
|
||||
=========================
|
||||
|
||||
This release addresses the security issues CVE-2021-21300.
|
||||
|
||||
Fixes since v2.17.5
|
||||
-------------------
|
||||
|
||||
* CVE-2021-21300:
|
||||
On case-insensitive file systems with support for symbolic links,
|
||||
if Git is configured globally to apply delay-capable clean/smudge
|
||||
filters (such as Git LFS), Git could be fooled into running
|
||||
remote code during a clone.
|
||||
|
||||
Credit for finding and fixing this vulnerability goes to Matheus
|
||||
Tavares, helped by Johannes Schindelin.
|
8
Documentation/RelNotes/2.18.2.txt
Normal file
8
Documentation/RelNotes/2.18.2.txt
Normal file
@ -0,0 +1,8 @@
|
||||
Git v2.18.2 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.14.6, v2.15.4
|
||||
and in v2.17.3, addressing the security issues CVE-2019-1348,
|
||||
CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352,
|
||||
CVE-2019-1353, CVE-2019-1354, and CVE-2019-1387; see the release notes
|
||||
for those versions for details.
|
5
Documentation/RelNotes/2.18.3.txt
Normal file
5
Documentation/RelNotes/2.18.3.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Git v2.18.3 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.17.4; see
|
||||
the release notes for that version for details.
|
5
Documentation/RelNotes/2.18.4.txt
Normal file
5
Documentation/RelNotes/2.18.4.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Git v2.18.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.17.5; see
|
||||
the release notes for that version for details.
|
6
Documentation/RelNotes/2.18.5.txt
Normal file
6
Documentation/RelNotes/2.18.5.txt
Normal file
@ -0,0 +1,6 @@
|
||||
Git v2.18.5 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.17.6 to address
|
||||
the security issue CVE-2021-21300; see the release notes for that
|
||||
version for details.
|
8
Documentation/RelNotes/2.19.3.txt
Normal file
8
Documentation/RelNotes/2.19.3.txt
Normal file
@ -0,0 +1,8 @@
|
||||
Git v2.19.3 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.14.6, v2.15.4
|
||||
and in v2.17.3, addressing the security issues CVE-2019-1348,
|
||||
CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352,
|
||||
CVE-2019-1353, CVE-2019-1354, and CVE-2019-1387; see the release notes
|
||||
for those versions for details.
|
5
Documentation/RelNotes/2.19.4.txt
Normal file
5
Documentation/RelNotes/2.19.4.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Git v2.19.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.17.4; see
|
||||
the release notes for that version for details.
|
5
Documentation/RelNotes/2.19.5.txt
Normal file
5
Documentation/RelNotes/2.19.5.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Git v2.19.5 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.17.5; see
|
||||
the release notes for that version for details.
|
6
Documentation/RelNotes/2.19.6.txt
Normal file
6
Documentation/RelNotes/2.19.6.txt
Normal file
@ -0,0 +1,6 @@
|
||||
Git v2.19.6 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.17.6 and
|
||||
v2.18.5 to address the security issue CVE-2021-21300; see the
|
||||
release notes for these versions for details.
|
18
Documentation/RelNotes/2.20.2.txt
Normal file
18
Documentation/RelNotes/2.20.2.txt
Normal file
@ -0,0 +1,18 @@
|
||||
Git v2.20.2 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.14.6, v2.15.4
|
||||
and in v2.17.3, addressing the security issues CVE-2019-1348,
|
||||
CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352,
|
||||
CVE-2019-1353, CVE-2019-1354, and CVE-2019-1387; see the release notes
|
||||
for those versions for details.
|
||||
|
||||
The change to disallow `submodule.<name>.update=!command` entries in
|
||||
`.gitmodules` which was introduced v2.15.4 (and for which v2.17.3
|
||||
added explicit fsck checks) fixes the vulnerability in v2.20.x where a
|
||||
recursive clone followed by a submodule update could execute code
|
||||
contained within the repository without the user explicitly having
|
||||
asked for that (CVE-2019-19604).
|
||||
|
||||
Credit for finding this vulnerability goes to Joern Schneeweisz,
|
||||
credit for the fixes goes to Jonathan Nieder.
|
5
Documentation/RelNotes/2.20.3.txt
Normal file
5
Documentation/RelNotes/2.20.3.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Git v2.20.3 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.17.4; see
|
||||
the release notes for that version for details.
|
5
Documentation/RelNotes/2.20.4.txt
Normal file
5
Documentation/RelNotes/2.20.4.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Git v2.20.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.17.5; see
|
||||
the release notes for that version for details.
|
6
Documentation/RelNotes/2.20.5.txt
Normal file
6
Documentation/RelNotes/2.20.5.txt
Normal file
@ -0,0 +1,6 @@
|
||||
Git v2.20.5 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.17.6, v2.18.5
|
||||
and v2.19.6 to address the security issue CVE-2021-21300; see
|
||||
the release notes for these versions for details.
|
12
Documentation/RelNotes/2.21.1.txt
Normal file
12
Documentation/RelNotes/2.21.1.txt
Normal file
@ -0,0 +1,12 @@
|
||||
Git v2.21.1 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.14.6, v2.15.4,
|
||||
v2.17.3 and in v2.20.2, addressing the security issues CVE-2019-1348,
|
||||
CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352,
|
||||
CVE-2019-1353, CVE-2019-1354, CVE-2019-1387, and CVE-2019-19604;
|
||||
see the release notes for those versions for details.
|
||||
|
||||
Additionally, this version also includes a couple of fixes for the
|
||||
Windows-specific quoting of command-line arguments when Git executes
|
||||
a Unix shell on Windows.
|
5
Documentation/RelNotes/2.21.2.txt
Normal file
5
Documentation/RelNotes/2.21.2.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Git v2.21.2 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.17.4; see
|
||||
the release notes for that version for details.
|
5
Documentation/RelNotes/2.21.3.txt
Normal file
5
Documentation/RelNotes/2.21.3.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Git v2.21.3 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.17.5; see
|
||||
the release notes for that version for details.
|
6
Documentation/RelNotes/2.21.4.txt
Normal file
6
Documentation/RelNotes/2.21.4.txt
Normal file
@ -0,0 +1,6 @@
|
||||
Git v2.21.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.17.6, v2.18.5,
|
||||
v2.19.6 and v2.20.5 to address the security issue CVE-2021-21300;
|
||||
see the release notes for these versions for details.
|
@ -1,597 +0,0 @@
|
||||
Git 2.22 Release Notes
|
||||
======================
|
||||
|
||||
Updates since v2.21
|
||||
-------------------
|
||||
|
||||
Backward compatibility note
|
||||
|
||||
* The filter specification "--filter=sparse:path=<path>" used to
|
||||
create a lazy/partial clone has been removed. Using a blob that is
|
||||
part of the project as sparse specification is still supported with
|
||||
the "--filter=sparse:oid=<blob>" option.
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* "git checkout --no-overlay" can be used to trigger a new mode of
|
||||
checking out paths out of the tree-ish, that allows paths that
|
||||
match the pathspec that are in the current index and working tree
|
||||
and are not in the tree-ish.
|
||||
|
||||
* The %(trailers) formatter in "git log --format=..." now allows to
|
||||
optionally pick trailers selectively by keyword, show only values,
|
||||
etc.
|
||||
|
||||
* Four new configuration variables {author,committer}.{name,email}
|
||||
have been introduced to override user.{name,email} in more specific
|
||||
cases.
|
||||
|
||||
* Command-line completion (in contrib/) learned to tab-complete the
|
||||
"git submodule absorbgitdirs" subcommand.
|
||||
|
||||
* "git branch" learned a new subcommand "--show-current".
|
||||
|
||||
* Output from "diff --cc" did not show the original paths when the
|
||||
merge involved renames. A new option adds the paths in the
|
||||
original trees to the output.
|
||||
|
||||
* The command line completion (in contrib/) has been taught to
|
||||
complete more subcommand parameters.
|
||||
|
||||
* The final report from "git bisect" used to show the suspected
|
||||
culprit using a raw "diff-tree", with which there is no output for
|
||||
a merge commit. This has been updated to use a more modern and
|
||||
human readable output that still is concise enough.
|
||||
|
||||
* "git rebase --rebase-merges" replaces its old "--preserve-merges"
|
||||
option; the latter is now marked as deprecated.
|
||||
|
||||
* Error message given while cloning with --recurse-submodules has
|
||||
been updated.
|
||||
|
||||
* The completion helper code now pays attention to repository-local
|
||||
configuration (when available), which allows --list-cmds to honour
|
||||
a repository specific setting of completion.commands, for example.
|
||||
|
||||
* "git mergetool" learned to offer Sublime Merge (smerge) as one of
|
||||
its backends.
|
||||
|
||||
* A new hook "post-index-change" is called when the on-disk index
|
||||
file changes, which can help e.g. a virtualized working tree
|
||||
implementation.
|
||||
|
||||
* "git difftool" can now run outside a repository.
|
||||
|
||||
* "git checkout -m <other>" was about carrying the differences
|
||||
between HEAD and the working-tree files forward while checking out
|
||||
another branch, and ignored the differences between HEAD and the
|
||||
index. The command has been taught to abort when the index and the
|
||||
HEAD are different.
|
||||
|
||||
* A progress indicator has been added to the "index-pack" step, which
|
||||
often makes users wait for completion during "git clone".
|
||||
|
||||
* "git submodule" learns "set-branch" subcommand that allows the
|
||||
submodule.*.branch settings to be modified.
|
||||
|
||||
* "git merge-recursive" backend recently learned a new heuristics to
|
||||
infer file movement based on how other files in the same directory
|
||||
moved. As this is inherently less robust heuristics than the one
|
||||
based on the content similarity of the file itself (rather than
|
||||
based on what its neighbours are doing), it sometimes gives an
|
||||
outcome unexpected by the end users. This has been toned down to
|
||||
leave the renamed paths in higher/conflicted stages in the index so
|
||||
that the user can examine and confirm the result.
|
||||
|
||||
* "git tag" learned to give an advice suggesting it might be a
|
||||
mistake when creating an annotated or signed tag that points at
|
||||
another tag.
|
||||
|
||||
* The "git pack-objects" command learned to report the number of
|
||||
objects it packed via the trace2 mechanism.
|
||||
|
||||
* The list of conflicted paths shown in the editor while concluding a
|
||||
conflicted merge was shown above the scissors line when the
|
||||
clean-up mode is set to "scissors", even though it was commented
|
||||
out just like the list of updated paths and other information to
|
||||
help the user explain the merge better.
|
||||
|
||||
* The trace2 tracing facility learned to auto-generate a filename
|
||||
when told to log to a directory.
|
||||
|
||||
* "git clone" learned a new --server-option option when talking over
|
||||
the protocol version 2.
|
||||
|
||||
* The connectivity bitmaps are created by default in bare
|
||||
repositories now; also the pathname hash-cache is created by
|
||||
default to avoid making crappy deltas when repacking.
|
||||
|
||||
* "git branch new A...B" and "git checkout -b new A...B" have been
|
||||
taught that in their contexts, the notation A...B means "the merge
|
||||
base between these two commits", just like "git checkout A...B"
|
||||
detaches HEAD at that commit.
|
||||
|
||||
* Update "git difftool" and "git mergetool" so that the combinations
|
||||
of {diff,merge}.{tool,guitool} configuration variables serve as
|
||||
fallback settings of each other in a sensible order.
|
||||
|
||||
* The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
|
||||
mode; they are now explicitly marked as mutually incompatible.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* The diff machinery, one of the oldest parts of the system, which
|
||||
long predates the parse-options API, uses fairly long and complex
|
||||
handcrafted option parser. This is being rewritten to use the
|
||||
parse-options API.
|
||||
|
||||
* The implementation of pack-redundant has been updated for
|
||||
performance in a repository with many packfiles.
|
||||
|
||||
* A more structured way to obtain execution trace has been added.
|
||||
|
||||
* "git prune" has been taught to take advantage of reachability
|
||||
bitmap when able.
|
||||
|
||||
* The command line parser of "git commit-tree" has been rewritten to
|
||||
use the parse-options API.
|
||||
|
||||
* Suggest GitGitGadget instead of submitGit as a way to submit
|
||||
patches based on GitHub PR to us.
|
||||
|
||||
* The test framework has been updated to help developers by making it
|
||||
easier to run most of the tests under different versions of
|
||||
over-the-wire protocols.
|
||||
|
||||
* Dev support update to make it easier to compare two formatted
|
||||
results from our documentation.
|
||||
|
||||
* The scripted "git rebase" implementation has been retired.
|
||||
|
||||
* "git multi-pack-index verify" did not scale well with the number of
|
||||
packfiles, which is being improved.
|
||||
|
||||
* "git stash" has been rewritten in C.
|
||||
|
||||
* The "check-docs" Makefile target to support developers has been
|
||||
updated.
|
||||
|
||||
* The tests have been updated not to rely on the abbreviated option
|
||||
names the parse-options API offers, to protect us from an
|
||||
abbreviated form of an option that used to be unique within the
|
||||
command getting non-unique when a new option that share the same
|
||||
prefix is added.
|
||||
|
||||
* The scripted version of "git rebase -i" wrote and rewrote the todo
|
||||
list many times during a single step of its operation, and the
|
||||
recent C-rewrite made a faithful conversion of the logic to C. The
|
||||
implementation has been updated to carry necessary information
|
||||
around in-core to avoid rewriting the same file over and over
|
||||
unnecessarily.
|
||||
|
||||
* Test framework update to more robustly clean up leftover files and
|
||||
processes after tests are done.
|
||||
|
||||
* Conversion from unsigned char[20] to struct object_id continues.
|
||||
|
||||
* While running "git diff" in a lazy clone, we can upfront know which
|
||||
missing blobs we will need, instead of waiting for the on-demand
|
||||
machinery to discover them one by one. The code learned to aim to
|
||||
achieve better performance by batching the request for these
|
||||
promised blobs.
|
||||
|
||||
* During an initial "git clone --depth=..." partial clone, it is
|
||||
pointless to spend cycles for a large portion of the connectivity
|
||||
check that enumerates and skips promisor objects (which by
|
||||
definition is all objects fetched from the other side). This has
|
||||
been optimized out.
|
||||
|
||||
* Mechanically and systematically drop "extern" from function
|
||||
declaration.
|
||||
|
||||
* The script to aggregate perf result unconditionally depended on
|
||||
libjson-perl even though it did not have to, which has been
|
||||
corrected.
|
||||
|
||||
* The internal implementation of "git rebase -i" has been updated to
|
||||
avoid forking a separate "rebase--interactive" process.
|
||||
|
||||
* Allow DEP and ASLR for Windows build to for security hardening.
|
||||
|
||||
* Performance test framework has been broken and measured the version
|
||||
of Git that happens to be on $PATH, not the specified one to
|
||||
measure, for a while, which has been corrected.
|
||||
|
||||
* Optionally "make coccicheck" can feed multiple source files to
|
||||
spatch, gaining performance while spending more memory.
|
||||
|
||||
* Attempt to use an abbreviated option in "git clone --recurs" is
|
||||
responded by a request to disambiguate between --recursive and
|
||||
--recurse-submodules, which is bad because these two are synonyms.
|
||||
The parse-options API has been extended to define such synonyms
|
||||
more easily and not produce an unnecessary failure.
|
||||
|
||||
* A pair of private functions in http.c that had names similar to
|
||||
fread/fwrite did not return the number of elements, which was found
|
||||
to be confusing.
|
||||
|
||||
* Update collision-detecting SHA-1 code to build properly on HP-UX.
|
||||
|
||||
|
||||
Fixes since v2.21
|
||||
-----------------
|
||||
|
||||
* "git prune-packed" did not notice and complain against excess
|
||||
arguments given from the command line, which now it does.
|
||||
(merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).
|
||||
|
||||
* Split-index fix.
|
||||
(merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).
|
||||
|
||||
* "git diff --no-index" may still want to access Git goodies like
|
||||
--ext-diff and --textconv, but so far these have been ignored,
|
||||
which has been corrected.
|
||||
(merge 287ab28bfa jk/diff-no-index-initialize later to maint).
|
||||
|
||||
* Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
|
||||
a bug in the latter (lack of authentication retry) and generally
|
||||
improves the code base.
|
||||
(merge a97d00799a jt/http-auth-proto-v2-fix later to maint).
|
||||
|
||||
* The include file compat/bswap.h has been updated so that it is safe
|
||||
to (accidentally) include it more than once.
|
||||
(merge 33aa579a55 jk/guard-bswap-header later to maint).
|
||||
|
||||
* The set of header files used by "make hdr-check" unconditionally
|
||||
included sha256/gcrypt.h, even when it is not used, causing the
|
||||
make target to fail. We now skip it when GCRYPT_SHA256 is not in
|
||||
use.
|
||||
(merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).
|
||||
|
||||
* The Makefile uses 'find' utility to enumerate all the *.h header
|
||||
files, which is expensive on platforms with slow filesystems; it
|
||||
now optionally uses "ls-files" if working within a repository,
|
||||
which is a trick similar to how all sources are enumerated to run
|
||||
ETAGS on.
|
||||
(merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).
|
||||
|
||||
* "git rebase" that was reimplemented in C did not set ORIG_HEAD
|
||||
correctly, which has been corrected.
|
||||
(merge cbd29ead92 js/rebase-orig-head-fix later to maint).
|
||||
|
||||
* Dev support.
|
||||
(merge f545737144 js/stress-test-ui-tweak later to maint).
|
||||
|
||||
* CFLAGS now can be tweaked when invoking Make while using
|
||||
DEVELOPER=YesPlease; this did not work well before.
|
||||
(merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).
|
||||
|
||||
* "git fsck --connectivity-only" omits computation necessary to sift
|
||||
the objects that are not reachable from any of the refs into
|
||||
unreachable and dangling. This is now enabled when dangling
|
||||
objects are requested (which is done by default, but can be
|
||||
overridden with the "--no-dangling" option).
|
||||
(merge 8d8c2a5aef jk/fsck-doc later to maint).
|
||||
|
||||
* On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
|
||||
the upload-pack that runs on the other end that hangs up after
|
||||
detecting an error could cause "git fetch" to die with a signal,
|
||||
which led to a flaky test. "git fetch" now ignores SIGPIPE during
|
||||
the network portion of its operation (this is not a problem as we
|
||||
check the return status from our write(2)s).
|
||||
(merge 143588949c jk/no-sigpipe-during-network-transport later to maint).
|
||||
|
||||
* A recent update broke "is this object available to us?" check for
|
||||
well-known objects like an empty tree (which should yield "yes",
|
||||
even when there is no on-disk object for an empty tree), which has
|
||||
been corrected.
|
||||
(merge f06ab027ef jk/virtual-objects-do-exist later to maint).
|
||||
|
||||
* The setup code has been cleaned up to avoid leaks around the
|
||||
repository_format structure.
|
||||
(merge e8805af1c3 ma/clear-repository-format later to maint).
|
||||
|
||||
* "git config --type=color ..." is meant to replace "git config --get-color"
|
||||
but there is a slight difference that wasn't documented, which is
|
||||
now fixed.
|
||||
(merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).
|
||||
|
||||
* When the "clean" filter can reduce the size of a huge file in the
|
||||
working tree down to a small "token" (a la Git LFS), there is no
|
||||
point in allocating a huge scratch area upfront, but the buffer is
|
||||
sized based on the original file size. The convert mechanism now
|
||||
allocates very minimum and reallocates as it receives the output
|
||||
from the clean filter process.
|
||||
(merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).
|
||||
|
||||
* "git rebase" uses the refs/rewritten/ hierarchy to store its
|
||||
intermediate states, which inherently makes the hierarchy per
|
||||
worktree, but it didn't quite work well.
|
||||
(merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).
|
||||
|
||||
* "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
|
||||
output as it should. This has been corrected.
|
||||
(merge 05314efaea jk/line-log-with-patch later to maint).
|
||||
|
||||
* "git worktree add" used to do a "find an available name with stat
|
||||
and then mkdir", which is race-prone. This has been fixed by using
|
||||
mkdir and reacting to EEXIST in a loop.
|
||||
(merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).
|
||||
|
||||
* Build update for SHA-1 with collision detection.
|
||||
(merge 07a20f569b jk/sha1dc later to maint).
|
||||
|
||||
* Build procedure has been fixed around use of asciidoctor instead of
|
||||
asciidoc.
|
||||
(merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).
|
||||
|
||||
* remote-http transport did not anonymize URLs reported in its error
|
||||
messages at places.
|
||||
(merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).
|
||||
|
||||
* Error messages given from the http transport have been updated so
|
||||
that they can be localized.
|
||||
(merge ed8b4132c8 js/remote-curl-i18n later to maint).
|
||||
|
||||
* "git init" forgot to read platform-specific repository
|
||||
configuration, which made Windows port to ignore settings of
|
||||
core.hidedotfiles, for example.
|
||||
|
||||
* A corner-case object name ambiguity while the sequencer machinery
|
||||
is working (e.g. "rebase -i -x") has been fixed.
|
||||
|
||||
* "git format-patch" did not diagnose an error while opening the
|
||||
output file for the cover-letter, which has been corrected.
|
||||
(merge 2fe95f494c jc/format-patch-error-check later to maint).
|
||||
|
||||
* "git checkout -f <branch>" while the index has an unmerged path
|
||||
incorrectly left some paths in an unmerged state, which has been
|
||||
corrected.
|
||||
|
||||
* A corner case bug in the refs API has been corrected.
|
||||
(merge d3322eb28b jk/refs-double-abort later to maint).
|
||||
|
||||
* Unicode update.
|
||||
(merge 584b62c37b bb/unicode-12 later to maint).
|
||||
|
||||
* dumb-http walker has been updated to share more error recovery
|
||||
strategy with the normal codepath.
|
||||
|
||||
* A buglet in configuration parser has been fixed.
|
||||
(merge 19e7fdaa58 nd/include-if-wildmatch later to maint).
|
||||
|
||||
* The documentation for "git read-tree --reset -u" has been updated.
|
||||
(merge b5a0bd694c nd/read-tree-reset-doc later to maint).
|
||||
|
||||
* Code clean-up around a much-less-important-than-it-used-to-be
|
||||
update_server_info() function.
|
||||
(merge b3223761c8 jk/server-info-rabbit-hole later to maint).
|
||||
|
||||
* The message given when "git commit -a <paths>" errors out has been
|
||||
updated.
|
||||
(merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).
|
||||
|
||||
* "git cherry-pick --options A..B", after giving control back to the
|
||||
user to ask help resolving a conflicted step, did not honor the
|
||||
options it originally received, which has been corrected.
|
||||
|
||||
* Various glitches in "git gc" around reflog handling have been fixed.
|
||||
|
||||
* The code to read from commit-graph file has been cleanup with more
|
||||
careful error checking before using data read from it.
|
||||
|
||||
* Performance fix around "git fetch" that grabs many refs.
|
||||
(merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).
|
||||
|
||||
* Protocol v2 support in "git fetch-pack" of shallow clones has been
|
||||
corrected.
|
||||
|
||||
* Performance fix around "git blame", especially in a linear history
|
||||
(which is the norm we should optimize for).
|
||||
(merge f892014943 dk/blame-keep-origin-blob later to maint).
|
||||
|
||||
* Performance fix for "rev-list --parents -- pathspec".
|
||||
(merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).
|
||||
|
||||
* Updating the display with progress message has been cleaned up to
|
||||
deal better with overlong messages.
|
||||
(merge 545dc345eb sg/overlong-progress-fix later to maint).
|
||||
|
||||
* "git blame -- path" in a non-bare repository starts blaming from
|
||||
the working tree, and the same command in a bare repository errors
|
||||
out because there is no working tree by definition. The command
|
||||
has been taught to instead start blaming from the commit at HEAD,
|
||||
which is more useful.
|
||||
(merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).
|
||||
|
||||
* An underallocation in the code to read the untracked cache
|
||||
extension has been corrected.
|
||||
(merge 3a7b45a623 js/untracked-cache-allocfix later to maint).
|
||||
|
||||
* The code is updated to check the result of memory allocation before
|
||||
it is used in more places, by using xmalloc and/or xcalloc calls.
|
||||
(merge 999b951b28 jk/xmalloc later to maint).
|
||||
|
||||
* The GETTEXT_POISON test option has been quite broken ever since it
|
||||
was made runtime-tunable, which has been fixed.
|
||||
(merge f88b9cb603 jc/gettext-test-fix later to maint).
|
||||
|
||||
* Test fix on APFS that is incapable of store paths in Latin-1.
|
||||
(merge 3889149619 js/iso8895-test-on-apfs later to maint).
|
||||
|
||||
* "git submodule foreach <command> --quiet" did not pass the option
|
||||
down correctly, which has been corrected.
|
||||
(merge a282f5a906 nd/submodule-foreach-quiet later to maint).
|
||||
|
||||
* "git send-email" has been taught to use quoted-printable when the
|
||||
payload contains carriage-return. The use of the mechanism is in
|
||||
line with the design originally added the codepath that chooses QP
|
||||
when the payload has overly long lines.
|
||||
(merge 74d76a1701 bc/send-email-qp-cr later to maint).
|
||||
|
||||
* The recently added feature to add addresses that are on
|
||||
anything-by: trailers in 'git send-email' was found to be way too
|
||||
eager and considered nonsense strings as if they can be legitimate
|
||||
beginning of *-by: trailer. This has been tightened.
|
||||
|
||||
* Builds with gettext broke on recent macOS w/ Homebrew, which
|
||||
seems to have stopped including from /usr/local/include; this
|
||||
has been corrected.
|
||||
(merge 92a1377a2a js/macos-gettext-build later to maint).
|
||||
|
||||
* Running "git add" on a repository created inside the current
|
||||
repository is an explicit indication that the user wants to add it
|
||||
as a submodule, but when the HEAD of the inner repository is on an
|
||||
unborn branch, it cannot be added as a submodule. Worse, the files
|
||||
in its working tree can be added as if they are a part of the outer
|
||||
repository, which is not what the user wants. These problems are
|
||||
being addressed.
|
||||
(merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).
|
||||
|
||||
* "git cherry-pick" run with the "-x" or the "--signoff" option used
|
||||
to (and more importantly, ought to) clean up the commit log message
|
||||
with the --cleanup=space option by default, but this has been
|
||||
broken since late 2017. This has been fixed.
|
||||
|
||||
* When given a tag that points at a commit-ish, "git replace --graft"
|
||||
failed to peel the tag before writing a replace ref, which did not
|
||||
make sense because the old graft mechanism the feature wants to
|
||||
mimic only allowed to replace one commit object with another.
|
||||
This has been fixed.
|
||||
(merge ee521ec4cb cc/replace-graft-peel-tags later to maint).
|
||||
|
||||
* Code tightening against a "wrong" object appearing where an object
|
||||
of a different type is expected, instead of blindly assuming that
|
||||
the connection between objects are correctly made.
|
||||
(merge 97dd512af7 tb/unexpected later to maint).
|
||||
|
||||
* An earlier update for MinGW and Cygwin accidentally broke MSVC build,
|
||||
which has been fixed.
|
||||
(merge 22c3634c0f ss/msvc-path-utils-fix later to maint).
|
||||
|
||||
* %(push:track) token used in the --format option to "git
|
||||
for-each-ref" and friends was not showing the right branch, which
|
||||
has been fixed.
|
||||
(merge c646d0934e dr/ref-filter-push-track-fix later to maint).
|
||||
|
||||
* "make check-docs", "git help -a", etc. did not account for cases
|
||||
where a particular build may deliberately omit some subcommands,
|
||||
which has been corrected.
|
||||
|
||||
* The logic to tell if a Git repository has a working tree protects
|
||||
"git branch -D" from removing the branch that is currently checked
|
||||
out by mistake. The implementation of this logic was broken for
|
||||
repositories with unusual name, which unfortunately is the norm for
|
||||
submodules these days. This has been fixed.
|
||||
(merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).
|
||||
|
||||
* AIX shared the same build issues with other BSDs around fileno(fp),
|
||||
which has been corrected.
|
||||
(merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).
|
||||
|
||||
* The autoconf generated configure script failed to use the right
|
||||
gettext() implementations from -libintl by ignoring useless stub
|
||||
implementations shipped in some C library, which has been
|
||||
corrected.
|
||||
(merge b71e56a683 vk/autoconf-gettext later to maint).
|
||||
|
||||
* Fix index-pack perf test so that the repeated invocations always
|
||||
run in an empty repository, which emulates the initial clone
|
||||
situation better.
|
||||
(merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).
|
||||
|
||||
* A "ls-files" that emulates "find" to enumerate files in the working
|
||||
tree resulted in duplicated Makefile rules that caused the build to
|
||||
issue an unnecessary warning during a trial build after merge
|
||||
conflicts are resolved in working tree *.h files but before the
|
||||
resolved results are added to the index. This has been corrected.
|
||||
|
||||
* "git cherry-pick" (and "revert" that shares the same runtime engine)
|
||||
that deals with multiple commits got confused when the final step
|
||||
gets stopped with a conflict and the user concluded the sequence
|
||||
with "git commit". Attempt to fix it by cleaning up the state
|
||||
files used by these commands in such a situation.
|
||||
(merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).
|
||||
|
||||
* On a filesystem like HFS+, the names of the refs stored as filesystem
|
||||
entities may become different from what the end-user expects, just
|
||||
like files in the working tree get "renamed". Work around the
|
||||
mismatch by paying attention to the core.precomposeUnicode
|
||||
configuration.
|
||||
(merge 8e712ef6fc en/unicode-in-refnames later to maint).
|
||||
|
||||
* The code to generate the multi-pack idx file was not prepared to
|
||||
see too many packfiles and ran out of open file descriptor, which
|
||||
has been corrected.
|
||||
|
||||
* To run tests for Git SVN, our scripts for CI used to install the
|
||||
git-svn package (in the hope that it would bring in the right
|
||||
dependencies). This has been updated to install the more direct
|
||||
dependency, namely, libsvn-perl.
|
||||
(merge db864306cf sg/ci-libsvn-perl later to maint).
|
||||
|
||||
* "git cvsexportcommit" running on msys did not expect cvsnt showed
|
||||
"cvs status" output with CRLF line endings.
|
||||
|
||||
* The fsmonitor interface got out of sync after the in-core index
|
||||
file gets discarded, which has been corrected.
|
||||
(merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).
|
||||
|
||||
* "git status" did not know that the "label" instruction in the
|
||||
todo-list "rebase -i -r" uses should not be shown as a hex object
|
||||
name.
|
||||
|
||||
* A prerequisite check in the test suite to see if a working jgit is
|
||||
available was made more robust.
|
||||
(merge abd0f28983 tz/test-lib-check-working-jgit later to maint).
|
||||
|
||||
* The codepath to parse :<path> that obtains the object name for an
|
||||
indexed object has been made more robust.
|
||||
|
||||
* Code cleanup, docfix, build fix, etc.
|
||||
(merge 11f470aee7 jc/test-yes-doc later to maint).
|
||||
(merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
|
||||
(merge 5c326d1252 jk/unused-params later to maint).
|
||||
(merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
|
||||
(merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
|
||||
(merge 1ede45e44b en/merge-options-doc later to maint).
|
||||
(merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
|
||||
(merge c271dc28fd nd/no-more-check-racy later to maint).
|
||||
(merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
|
||||
(merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
|
||||
(merge 716a5af812 rd/gc-prune-doc-fix later to maint).
|
||||
(merge 50b206371d js/untravis-windows later to maint).
|
||||
(merge dbf47215e3 js/rebase-recreate-merge later to maint).
|
||||
(merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
|
||||
(merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
|
||||
(merge af91b0230c dl/ignore-docs later to maint).
|
||||
(merge 59a06e947b ra/t3600-test-path-funcs later to maint).
|
||||
(merge e041d0781b ar/t4150-remove-cruft later to maint).
|
||||
(merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
|
||||
(merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
|
||||
(merge ed31851fa6 ab/doc-misc-typofixes later to maint).
|
||||
(merge a7256debd4 nd/checkout-m-doc-update later to maint).
|
||||
(merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
|
||||
(merge 0b918b75af sg/t5318-cleanup later to maint).
|
||||
(merge 68ed71b53c cb/doco-mono later to maint).
|
||||
(merge a34dca2451 nd/interpret-trailers-docfix later to maint).
|
||||
(merge cf7b857a77 en/fast-import-parsing-fix later to maint).
|
||||
(merge fe61ccbc35 po/rerere-doc-fmt later to maint).
|
||||
(merge ffea0248bf po/describe-not-necessarily-7 later to maint).
|
||||
(merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
|
||||
(merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
|
||||
(merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
|
||||
(merge d8083e4180 km/t3000-retitle later to maint).
|
||||
(merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
|
||||
(merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
|
||||
(merge 6804ba3a58 cw/diff-highlight later to maint).
|
||||
(merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
|
||||
(merge d9ef573837 jk/apache-lsan later to maint).
|
||||
(merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
|
||||
(merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
|
||||
(merge 397a46db78 js/t5580-unc-alternate-test later to maint).
|
||||
(merge d4907720a2 cm/notes-comment-fix later to maint).
|
||||
(merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
|
||||
(merge 4c785c0edc js/rebase-config-bitfix later to maint).
|
||||
(merge 8e9fe16c87 es/doc-gitsubmodules-markup later to maint).
|
@ -1,147 +0,0 @@
|
||||
Git 2.22.1 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.22
|
||||
-----------------
|
||||
|
||||
* A relative pathname given to "git init --template=<path> <repo>"
|
||||
ought to be relative to the directory "git init" gets invoked in,
|
||||
but it instead was made relative to the repository, which has been
|
||||
corrected.
|
||||
|
||||
* "git worktree add" used to fail when another worktree connected to
|
||||
the same repository was corrupt, which has been corrected.
|
||||
|
||||
* The ownership rule for the file descriptor to fast-import remote
|
||||
backend was mixed up, leading to unrelated file descriptor getting
|
||||
closed, which has been fixed.
|
||||
|
||||
* "git update-server-info" used to leave stale packfiles in its
|
||||
output, which has been corrected.
|
||||
|
||||
* The server side support for "git fetch" used to show incorrect
|
||||
value for the HEAD symbolic ref when the namespace feature is in
|
||||
use, which has been corrected.
|
||||
|
||||
* "git am -i --resolved" segfaulted after trying to see a commit as
|
||||
if it were a tree, which has been corrected.
|
||||
|
||||
* "git bundle verify" needs to see if prerequisite objects exist in
|
||||
the receiving repository, but the command did not check if we are
|
||||
in a repository upfront, which has been corrected.
|
||||
|
||||
* "git merge --squash" is designed to update the working tree and the
|
||||
index without creating the commit, and this cannot be countermanded
|
||||
by adding the "--commit" option; the command now refuses to work
|
||||
when both options are given.
|
||||
|
||||
* The data collected by fsmonitor was not properly written back to
|
||||
the on-disk index file, breaking t7519 tests occasionally, which
|
||||
has been corrected.
|
||||
|
||||
* Update to Unicode 12.1 width table.
|
||||
|
||||
* The command line to invoke a "git cat-file" command from inside
|
||||
"git p4" was not properly quoted to protect a caret and running a
|
||||
broken command on Windows, which has been corrected.
|
||||
|
||||
* "git request-pull" learned to warn when the ref we ask them to pull
|
||||
from in the local repository and in the published repository are
|
||||
different.
|
||||
|
||||
* When creating a partial clone, the object filtering criteria is
|
||||
recorded for the origin of the clone, but this incorrectly used a
|
||||
hardcoded name "origin" to name that remote; it has been corrected
|
||||
to honor the "--origin <name>" option.
|
||||
|
||||
* "git fetch" into a lazy clone forgot to fetch base objects that are
|
||||
necessary to complete delta in a thin packfile, which has been
|
||||
corrected.
|
||||
|
||||
* The filter_data used in the list-objects-filter (which manages a
|
||||
lazily sparse clone repository) did not use the dynamic array API
|
||||
correctly---'nr' is supposed to point at one past the last element
|
||||
of the array in use. This has been corrected.
|
||||
|
||||
* The description about slashes in gitignore patterns (used to
|
||||
indicate things like "anchored to this level only" and "only
|
||||
matches directories") has been revamped.
|
||||
|
||||
* The URL decoding code has been updated to avoid going past the end
|
||||
of the string while parsing %-<hex>-<hex> sequence.
|
||||
|
||||
* The list of for-each like macros used by clang-format has been
|
||||
updated.
|
||||
|
||||
* "git push --atomic" that goes over the transport-helper (namely,
|
||||
the smart http transport) failed to prevent refs to be pushed when
|
||||
it can locally tell that one of the ref update will fail without
|
||||
having to consult the other end, which has been corrected.
|
||||
|
||||
* "git clean" silently skipped a path when it cannot lstat() it; now
|
||||
it gives a warning.
|
||||
|
||||
* A codepath that reads from GPG for signed object verification read
|
||||
past the end of allocated buffer, which has been fixed.
|
||||
|
||||
* "git rm" to resolve a conflicted path leaked an internal message
|
||||
"needs merge" before actually removing the path, which was
|
||||
confusing. This has been corrected.
|
||||
|
||||
* The "git clone" documentation refers to command line options in its
|
||||
description in the short form; they have been replaced with long
|
||||
forms to make them more recognisable.
|
||||
|
||||
* The configuration variable rebase.rescheduleFailedExec should be
|
||||
effective only while running an interactive rebase and should not
|
||||
affect anything when running an non-interactive one, which was not
|
||||
the case. This has been corrected.
|
||||
|
||||
* "git submodule foreach" did not protect command line options passed
|
||||
to the command to be run in each submodule correctly, when the
|
||||
"--recursive" option was in use.
|
||||
|
||||
* Use "Erase in Line" CSI sequence that is already used in the editor
|
||||
support to clear cruft in the progress output.
|
||||
|
||||
* The codepath to compute delta islands used to spew progress output
|
||||
without giving the callers any way to squelch it, which has been
|
||||
fixed.
|
||||
|
||||
* The code to parse scaled numbers out of configuration files has
|
||||
been made more robust and also easier to follow.
|
||||
|
||||
* An incorrect list of options was cached after command line
|
||||
completion failed (e.g. trying to complete a command that requires
|
||||
a repository outside one), which has been corrected.
|
||||
|
||||
* "git rebase --abort" used to leave refs/rewritten/ when concluding
|
||||
"git rebase -r", which has been corrected.
|
||||
|
||||
* "git stash show 23" used to work, but no more after getting
|
||||
rewritten in C; this regression has been corrected.
|
||||
|
||||
* "git interpret-trailers" always treated '#' as the comment
|
||||
character, regardless of core.commentChar setting, which has been
|
||||
corrected.
|
||||
|
||||
* Code clean-up to avoid signed integer overlaps during binary search.
|
||||
|
||||
* "git checkout -p" needs to selectively apply a patch in reverse,
|
||||
which did not work well.
|
||||
|
||||
* The commit-graph file is now part of the "files that the runtime
|
||||
may keep open file descriptors on, all of which would need to be
|
||||
closed when done with the object store", and the file descriptor to
|
||||
an existing commit-graph file now is closed before "gc" finalizes a
|
||||
new instance to replace it.
|
||||
|
||||
* Code restructuring during 2.20 period broke fetching tags via
|
||||
"import" based transports.
|
||||
|
||||
* We have been trying out a few language features outside c89; the
|
||||
coding guidelines document did not talk about them and instead had
|
||||
a blanket ban against them.
|
||||
|
||||
|
||||
Also contains various documentation updates, code clean-ups and minor fixups.
|
@ -1,410 +0,0 @@
|
||||
Git 2.23 Release Notes
|
||||
======================
|
||||
|
||||
Updates since v2.22
|
||||
-------------------
|
||||
|
||||
Backward compatibility note
|
||||
|
||||
* The "--base" option of "format-patch" computed the patch-ids for
|
||||
prerequisite patches in an unstable way, which has been updated to
|
||||
compute in a way that is compatible with "git patch-id --stable".
|
||||
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* The "git fast-export/import" pair has been taught to handle commits
|
||||
with log messages in encoding other than UTF-8 better.
|
||||
|
||||
* In recent versions of Git, per-worktree refs are exposed in
|
||||
refs/worktrees/<wtname>/ hierarchy, which means that worktree names
|
||||
must be a valid refname component. The code now sanitizes the names
|
||||
given to worktrees, to make sure these refs are well-formed.
|
||||
|
||||
* "git merge" learned "--quit" option that cleans up the in-progress
|
||||
merge while leaving the working tree and the index still in a mess.
|
||||
|
||||
* "git format-patch" learns a configuration to set the default for
|
||||
its --notes=<ref> option.
|
||||
|
||||
* The code to show args with potential typo that cannot be
|
||||
interpreted as a commit-ish has been improved.
|
||||
|
||||
* "git clone --recurse-submodules" learned to set up the submodules
|
||||
to ignore commit object names recorded in the superproject gitlink
|
||||
and instead use the commits that happen to be at the tip of the
|
||||
remote-tracking branches from the get-go, by passing the new
|
||||
"--remote-submodules" option.
|
||||
|
||||
* The pattern "git diff/grep" use to extract funcname and words
|
||||
boundary for Matlab has been extend to cover Octave, which is more
|
||||
or less equivalent.
|
||||
|
||||
* "git help git" was hard to discover (well, at least for some
|
||||
people).
|
||||
|
||||
* The pattern "git diff/grep" use to extract funcname and words
|
||||
boundary for Rust has been added.
|
||||
|
||||
* "git status" can be told a non-standard default value for the
|
||||
"--[no-]ahead-behind" option with a new configuration variable
|
||||
status.aheadBehind.
|
||||
|
||||
* "git fetch" and "git pull" reports when a fetch results in
|
||||
non-fast-forward updates to let the user notice unusual situation.
|
||||
The commands learned "--no-shown-forced-updates" option to disable
|
||||
this safety feature.
|
||||
|
||||
* Two new commands "git switch" and "git restore" are introduced to
|
||||
split "checking out a branch to work on advancing its history" and
|
||||
"checking out paths out of the index and/or a tree-ish to work on
|
||||
advancing the current history" out of the single "git checkout"
|
||||
command.
|
||||
|
||||
* "git branch --list" learned to always output the detached HEAD as
|
||||
the first item (when the HEAD is detached, of course), regardless
|
||||
of the locale.
|
||||
|
||||
* The conditional inclusion mechanism learned to base the choice on
|
||||
the branch the HEAD currently is on.
|
||||
|
||||
* "git rev-list --objects" learned with "--no-object-names" option to
|
||||
squelch the path to the object that is used as a grouping hint for
|
||||
pack-objects.
|
||||
|
||||
* A new tag.gpgSign configuration variable turns "git tag -a" into
|
||||
"git tag -s".
|
||||
|
||||
* "git multi-pack-index" learned expire and repack subcommands.
|
||||
|
||||
* "git blame" learned to "ignore" commits in the history, whose
|
||||
effects (as well as their presence) get ignored.
|
||||
|
||||
* "git cherry-pick/revert" learned a new "--skip" action.
|
||||
|
||||
* The tips of refs from the alternate object store can be used as
|
||||
starting point for reachability computation now.
|
||||
|
||||
* Extra blank lines in "git status" output have been reduced.
|
||||
|
||||
* The commits in a repository can be described by multiple
|
||||
commit-graph files now, which allows the commit-graph files to be
|
||||
updated incrementally.
|
||||
|
||||
* The "git log" command learns to issue a warning when log.mailmap
|
||||
configuration is not set and --[no-]mailmap option is not used, to
|
||||
prepare users for future versions of Git that uses the mailmap by
|
||||
default.
|
||||
|
||||
* "git range-diff" output has been tweaked for easier identification
|
||||
of which part of what file the patch shown is about.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* Update supporting parts of "git rebase" to remove code that should
|
||||
no longer be used.
|
||||
|
||||
* Developer support to emulate unsatisfied prerequisites in tests to
|
||||
ensure that the remainer of the tests still succeeds when tests
|
||||
with prerequisites are skipped.
|
||||
|
||||
* "git update-server-info" learned not to rewrite the file with the
|
||||
same contents.
|
||||
|
||||
* The way of specifying the path to find dynamic libraries at runtime
|
||||
has been simplified. The old default to pass -R/path/to/dir has been
|
||||
replaced with the new default to pass -Wl,-rpath,/path/to/dir,
|
||||
which is the more recent GCC uses. Those who need to build with an
|
||||
old GCC can still use "CC_LD_DYNPATH=-R"
|
||||
|
||||
* Prepare use of reachability index in topological walker that works
|
||||
on a range (A..B).
|
||||
|
||||
* A new tutorial targetting specifically aspiring git-core
|
||||
developers has been added.
|
||||
|
||||
* Auto-detect how to tell HP-UX aCC where to use dynamically linked
|
||||
libraries from at runtime.
|
||||
|
||||
* "git mergetool" and its tests now spawn fewer subprocesses.
|
||||
|
||||
* Dev support update to help tracing out tests.
|
||||
|
||||
* Support to build with MSVC has been updated.
|
||||
|
||||
* "git fetch" that grabs from a group of remotes learned to run the
|
||||
auto-gc only once at the very end.
|
||||
|
||||
* A handful of Windows build patches have been upstreamed.
|
||||
|
||||
* The code to read state files used by the sequencer machinery for
|
||||
"git status" has been made more robust against a corrupt or stale
|
||||
state files.
|
||||
|
||||
* "git for-each-ref" with multiple patterns have been optimized.
|
||||
|
||||
* The tree-walk API learned to pass an in-core repository
|
||||
instance throughout more codepaths.
|
||||
|
||||
* When one step in multi step cherry-pick or revert is reset or
|
||||
committed, the command line prompt script failed to notice the
|
||||
current status, which has been improved.
|
||||
|
||||
* Many GIT_TEST_* environment variables control various aspects of
|
||||
how our tests are run, but a few followed "non-empty is true, empty
|
||||
or unset is false" while others followed the usual "there are a few
|
||||
ways to spell true, like yes, on, etc., and also ways to spell
|
||||
false, like no, off, etc." convention.
|
||||
|
||||
* Adjust the dir-iterator API and apply it to the local clone
|
||||
optimization codepath.
|
||||
|
||||
* We have been trying out a few language features outside c89; the
|
||||
coding guidelines document did not talk about them and instead had
|
||||
a blanket ban against them.
|
||||
(merge cc0c42975a jc/post-c89-rules-doc later to maint).
|
||||
|
||||
* A test helper has been introduced to optimize preparation of test
|
||||
repositories with many simple commits, and a handful of test
|
||||
scripts have been updated to use it.
|
||||
|
||||
|
||||
Fixes since v2.22
|
||||
-----------------
|
||||
|
||||
* A relative pathname given to "git init --template=<path> <repo>"
|
||||
ought to be relative to the directory "git init" gets invoked in,
|
||||
but it instead was made relative to the repository, which has been
|
||||
corrected.
|
||||
(merge e1df7fe43f nd/init-relative-template-fix later to maint).
|
||||
|
||||
* "git worktree add" used to fail when another worktree connected to
|
||||
the same repository was corrupt, which has been corrected.
|
||||
(merge 105df73e71 nd/corrupt-worktrees later to maint).
|
||||
|
||||
* The ownership rule for the file descriptor to fast-import remote
|
||||
backend was mixed up, leading to unrelated file descriptor getting
|
||||
closed, which has been fixed.
|
||||
(merge 3203566a71 mh/import-transport-fd-fix later to maint).
|
||||
|
||||
* A "merge -c" instruction during "git rebase --rebase-merges" should
|
||||
give the user a chance to edit the log message, even when there is
|
||||
otherwise no need to create a new merge and replace the existing
|
||||
one (i.e. fast-forward instead), but did not. Which has been
|
||||
corrected.
|
||||
|
||||
* Code cleanup and futureproof.
|
||||
(merge 31f5256c82 ds/object-info-for-prefetch-fix later to maint).
|
||||
|
||||
* More parameter validation.
|
||||
(merge de99eb0c24 es/grep-require-name-when-needed later to maint).
|
||||
|
||||
* "git update-server-info" used to leave stale packfiles in its
|
||||
output, which has been corrected.
|
||||
(merge e941c48d49 ew/server-info-remove-crufts later to maint).
|
||||
|
||||
* The server side support for "git fetch" used to show incorrect
|
||||
value for the HEAD symbolic ref when the namespace feature is in
|
||||
use, which has been corrected.
|
||||
(merge 533e088250 jk/HEAD-symref-in-xfer-namespaces later to maint).
|
||||
|
||||
* "git am -i --resolved" segfaulted after trying to see a commit as
|
||||
if it were a tree, which has been corrected.
|
||||
(merge 7663e438c5 jk/am-i-resolved-fix later to maint).
|
||||
|
||||
* "git bundle verify" needs to see if prerequisite objects exist in
|
||||
the receiving repository, but the command did not check if we are
|
||||
in a repository upfront, which has been corrected.
|
||||
(merge 3bbbe467f2 js/bundle-verify-require-object-store later to maint).
|
||||
|
||||
* "git merge --squash" is designed to update the working tree and the
|
||||
index without creating the commit, and this cannot be countermanded
|
||||
by adding the "--commit" option; the command now refuses to work
|
||||
when both options are given.
|
||||
(merge 1d14d0c994 vv/merge-squash-with-explicit-commit later to maint).
|
||||
|
||||
* The data collected by fsmonitor was not properly written back to
|
||||
the on-disk index file, breaking t7519 tests occasionally, which
|
||||
has been corrected.
|
||||
(merge b5a8169752 js/fsmonitor-unflake later to maint).
|
||||
|
||||
* Update to Unicode 12.1 width table.
|
||||
(merge 5817f9caa3 bb/unicode-12.1-reiwa later to maint).
|
||||
|
||||
* The command line to invoke a "git cat-file" command from inside
|
||||
"git p4" was not properly quoted to protect a caret and running a
|
||||
broken command on Windows, which has been corrected.
|
||||
(merge c3f2358de3 mm/p4-unshelve-windows-fix later to maint).
|
||||
|
||||
* "git request-pull" learned to warn when the ref we ask them to pull
|
||||
from in the local repository and in the published repository are
|
||||
different.
|
||||
(merge 0454220d66 pb/request-pull-verify-remote-ref later to maint).
|
||||
|
||||
* When creating a partial clone, the object filtering criteria is
|
||||
recorded for the origin of the clone, but this incorrectly used a
|
||||
hardcoded name "origin" to name that remote; it has been corrected
|
||||
to honor the "--origin <name>" option.
|
||||
(merge 1c4a9f9114 xl/record-partial-clone-origin later to maint).
|
||||
|
||||
* "git fetch" into a lazy clone forgot to fetch base objects that are
|
||||
necessary to complete delta in a thin packfile, which has been
|
||||
corrected.
|
||||
(merge 810e19322d jt/partial-clone-missing-ref-delta-base later to maint).
|
||||
|
||||
* The filter_data used in the list-objects-filter (which manages a
|
||||
lazily sparse clone repository) did not use the dynamic array API
|
||||
correctly---'nr' is supposed to point at one past the last element
|
||||
of the array in use. This has been corrected.
|
||||
(merge 7140600e2e md/list-objects-filter-memfix later to maint).
|
||||
|
||||
* The description about slashes in gitignore patterns (used to
|
||||
indicate things like "anchored to this level only" and "only
|
||||
matches directories") has been revamped.
|
||||
(merge 1a58bad014 an/ignore-doc-update later to maint).
|
||||
|
||||
* The URL decoding code has been updated to avoid going past the end
|
||||
of the string while parsing %-<hex>-<hex> sequence.
|
||||
(merge d37dc239a4 md/url-parse-harden later to maint).
|
||||
|
||||
* The list of for-each like macros used by clang-format has been
|
||||
updated.
|
||||
(merge fc7e03aace mo/clang-format-for-each-update later to maint).
|
||||
|
||||
* "git branch --list" learned to show branches that are checked out
|
||||
in other worktrees connected to the same repository prefixed with
|
||||
'+', similar to the way the currently checked out branch is shown
|
||||
with '*' in front.
|
||||
(merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
|
||||
|
||||
* Code restructuring during 2.20 period broke fetching tags via
|
||||
"import" based transports.
|
||||
(merge f80d922355 fc/fetch-with-import-fix later to maint).
|
||||
|
||||
* The commit-graph file is now part of the "files that the runtime
|
||||
may keep open file descriptors on, all of which would need to be
|
||||
closed when done with the object store", and the file descriptor to
|
||||
an existing commit-graph file now is closed before "gc" finalizes a
|
||||
new instance to replace it.
|
||||
(merge 2d511cfc0b ds/close-object-store later to maint).
|
||||
|
||||
* "git checkout -p" needs to selectively apply a patch in reverse,
|
||||
which did not work well.
|
||||
(merge 2bd69b9024 pw/add-p-recount later to maint).
|
||||
|
||||
* Code clean-up to avoid signed integer wraparounds during binary search.
|
||||
(merge 568a05c5ec rs/avoid-overflow-in-midpoint-computation later to maint).
|
||||
|
||||
* "git interpret-trailers" always treated '#' as the comment
|
||||
character, regardless of core.commentChar setting, which has been
|
||||
corrected.
|
||||
(merge 29c83fc23f jk/trailers-use-config later to maint).
|
||||
|
||||
* "git stash show 23" used to work, but no more after getting
|
||||
rewritten in C; this regression has been corrected.
|
||||
(merge 63b50c8ffe tg/stash-ref-by-index-fix later to maint).
|
||||
|
||||
* "git rebase --abort" used to leave refs/rewritten/ when concluding
|
||||
"git rebase -r", which has been corrected.
|
||||
(merge d559f502c5 pw/rebase-abort-clean-rewritten later to maint).
|
||||
|
||||
* An incorrect list of options was cached after command line
|
||||
completion failed (e.g. trying to complete a command that requires
|
||||
a repository outside one), which has been corrected.
|
||||
(merge 69702523af nd/completion-no-cache-failure later to maint).
|
||||
|
||||
* The code to parse scaled numbers out of configuration files has
|
||||
been made more robust and also easier to follow.
|
||||
(merge 39c575c969 rs/config-unit-parsing later to maint).
|
||||
|
||||
* The codepath to compute delta islands used to spew progress output
|
||||
without giving the callers any way to squelch it, which has been
|
||||
fixed.
|
||||
(merge bdbdf42f8a jk/delta-islands-progress-fix later to maint).
|
||||
|
||||
* Protocol capabilities that go over wire should never be translated,
|
||||
but it was incorrectly marked for translation, which has been
|
||||
corrected. The output of protocol capabilities for debugging has
|
||||
been tweaked a bit.
|
||||
|
||||
* Use "Erase in Line" CSI sequence that is already used in the editor
|
||||
support to clear cruft in the progress output.
|
||||
(merge 5b12e3123b sg/rebase-progress later to maint).
|
||||
|
||||
* "git submodule foreach" did not protect command line options passed
|
||||
to the command to be run in each submodule correctly, when the
|
||||
"--recursive" option was in use.
|
||||
(merge 30db18b148 ms/submodule-foreach-fix later to maint).
|
||||
|
||||
* The configuration variable rebase.rescheduleFailedExec should be
|
||||
effective only while running an interactive rebase and should not
|
||||
affect anything when running an non-interactive one, which was not
|
||||
the case. This has been corrected.
|
||||
(merge 906b63942a js/rebase-reschedule-applies-only-to-interactive later to maint).
|
||||
|
||||
* The "git clone" documentation refers to command line options in its
|
||||
description in the short form; they have been replaced with long
|
||||
forms to make them more recognisable.
|
||||
(merge bfc8c84ed5 qn/clone-doc-use-long-form later to maint).
|
||||
|
||||
* Generation of pack bitmaps are now disabled when .keep files exist,
|
||||
as these are mutually exclusive features.
|
||||
(merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
|
||||
|
||||
* "git rm" to resolve a conflicted path leaked an internal message
|
||||
"needs merge" before actually removing the path, which was
|
||||
confusing. This has been corrected.
|
||||
(merge b2b1f615ce jc/denoise-rm-to-resolve later to maint).
|
||||
|
||||
* "git stash --keep-index" did not work correctly on paths that have
|
||||
been removed, which has been fixed.
|
||||
(merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
|
||||
|
||||
* Window 7 update ;-)
|
||||
(merge eb7c786314 js/mingw-spawn-with-spaces-in-path later to maint).
|
||||
|
||||
* A codepath that reads from GPG for signed object verification read
|
||||
past the end of allocated buffer, which has been fixed.
|
||||
(merge 64c45dc72e sr/gpg-interface-stop-at-the-end later to maint).
|
||||
|
||||
* "git clean" silently skipped a path when it cannot lstat() it; now
|
||||
it gives a warning.
|
||||
(merge b09364c47a js/clean-report-too-long-a-path later to maint).
|
||||
|
||||
* "git push --atomic" that goes over the transport-helper (namely,
|
||||
the smart http transport) failed to prevent refs to be pushed when
|
||||
it can locally tell that one of the ref update will fail without
|
||||
having to consult the other end, which has been corrected.
|
||||
(merge 2581ea3d31 es/local-atomic-push-failure-with-http later to maint).
|
||||
|
||||
* The internal diff machinery can be made to read out of bounds while
|
||||
looking for --funcion-context line in a corner case, which has been
|
||||
corrected.
|
||||
(merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
(merge f547101b26 es/git-debugger-doc later to maint).
|
||||
(merge 7877ac3d7b js/bisect-helper-check-get-oid-return-value later to maint).
|
||||
(merge 0108f47eb3 sw/git-p4-unshelve-branched-files later to maint).
|
||||
(merge 9df8f734fd cm/send-email-document-req-modules later to maint).
|
||||
(merge afc3bf6eb1 ab/hash-object-doc later to maint).
|
||||
(merge 1fde99cfc7 po/doc-branch later to maint).
|
||||
(merge 459842e1c2 dl/config-alias-doc later to maint).
|
||||
(merge 5d137fc2c7 cb/fsmonitor-intfix later to maint).
|
||||
(merge 921d49be86 rs/copy-array later to maint).
|
||||
(merge cc8d872e69 js/t3404-typofix later to maint).
|
||||
(merge 729a9b558b cb/mkstemps-uint-type-fix later to maint).
|
||||
(merge 9dae4fe79f js/gcc-8-and-9 later to maint).
|
||||
(merge ed33bd8f30 js/t0001-case-insensitive later to maint).
|
||||
(merge dfa880e336 jw/gitweb-sample-update later to maint).
|
||||
(merge e532a90a9f sg/t5551-fetch-smart-error-is-translated later to maint).
|
||||
(merge 8d45ad8c29 jt/t5551-test-chunked later to maint).
|
||||
(merge 1a64e07d23 sg/git-C-empty-doc later to maint).
|
||||
(merge 37a2e35395 sg/ci-brew-gcc-workaround later to maint).
|
||||
(merge 24df0d49c4 js/trace2-signo-typofix later to maint).
|
||||
(merge fbec05c210 cc/test-oidmap later to maint).
|
||||
(merge 7926cee904 di/readme-markup-fix later to maint).
|
||||
(merge 02638d1e11 vn/xmmap-gently later to maint).
|
||||
(merge f7bf24d4dd rm/gpg-program-doc-fix later to maint).
|
||||
(merge 3aef54e8b8 js/unmap-before-ext-diff later to maint).
|
@ -372,15 +372,15 @@ such as "Thanks-to:", "Based-on-patch-by:", or "Mentored-by:".
|
||||
Some parts of the system have dedicated maintainers with their own
|
||||
repositories.
|
||||
|
||||
- `git-gui/` comes from git-gui project, maintained by Pat Thoyts:
|
||||
- 'git-gui/' comes from git-gui project, maintained by Pat Thoyts:
|
||||
|
||||
git://repo.or.cz/git-gui.git
|
||||
|
||||
- `gitk-git/` comes from Paul Mackerras's gitk project:
|
||||
- 'gitk-git/' comes from Paul Mackerras's gitk project:
|
||||
|
||||
git://ozlabs.org/~paulus/gitk
|
||||
|
||||
- `po/` comes from the localization coordinator, Jiang Xin:
|
||||
- 'po/' comes from the localization coordinator, Jiang Xin:
|
||||
|
||||
https://github.com/git-l10n/git-po/
|
||||
|
||||
|
@ -11,12 +11,12 @@ module Git
|
||||
def process(parent, target, attrs)
|
||||
if parent.document.basebackend? 'html'
|
||||
prefix = parent.document.attr('git-relative-html-prefix')
|
||||
%(<a href="#{prefix}#{target}.html">#{target}(#{attrs[1]})</a>)
|
||||
%(<a href="#{prefix}#{target}.html">#{target}(#{attrs[1]})</a>\n)
|
||||
elsif parent.document.basebackend? 'docbook'
|
||||
"<citerefentry>\n" \
|
||||
"<refentrytitle>#{target}</refentrytitle>" \
|
||||
"<manvolnum>#{attrs[1]}</manvolnum>\n" \
|
||||
"</citerefentry>"
|
||||
"</citerefentry>\n"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -110,24 +110,5 @@ 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.
|
||||
|
||||
--ignore-rev <rev>::
|
||||
Ignore changes made by the revision when assigning blame, as if the
|
||||
change never happened. Lines that were changed or added by an ignored
|
||||
commit will be blamed on the previous commit that changed that line or
|
||||
nearby lines. This option may be specified multiple times to ignore
|
||||
more than one revision. If the `blame.markIgnoredLines` config option
|
||||
is set, then lines that were changed by an ignored commit and attributed to
|
||||
another commit will be marked with a `?` in the blame output. If the
|
||||
`blame.markUnblamableLines` config option is set, then those lines touched
|
||||
by an ignored commit that we could not attribute to another revision are
|
||||
marked with a '*'.
|
||||
|
||||
--ignore-revs-file <file>::
|
||||
Ignore revisions listed in `file`, which must be in the same format as an
|
||||
`fsck.skipList`. This option may be repeated, and these files will be
|
||||
processed after any files specified with the `blame.ignoreRevsFile` config
|
||||
option. An empty file name, `""`, will clear the list of revs from
|
||||
previously processed files.
|
||||
|
||||
-h::
|
||||
Show help message.
|
||||
|
@ -144,20 +144,6 @@ refer to linkgit:gitignore[5] for details. For convenience:
|
||||
This is the same as `gitdir` except that matching is done
|
||||
case-insensitively (e.g. on case-insensitive file sytems)
|
||||
|
||||
`onbranch`::
|
||||
The data that follows the keyword `onbranch:` is taken to be a
|
||||
pattern with standard globbing wildcards and two additional
|
||||
ones, `**/` and `/**`, that can match multiple path components.
|
||||
If we are in a worktree where the name of the branch that is
|
||||
currently checked out matches the pattern, the include condition
|
||||
is met.
|
||||
+
|
||||
If the pattern ends with `/`, `**` will be automatically added. For
|
||||
example, the pattern `foo/` becomes `foo/**`. In other words, it matches
|
||||
all branches that begin with `foo/`. This is useful if your branches are
|
||||
organized hierarchically and you would like to apply a configuration to
|
||||
all the branches in that hierarchy.
|
||||
|
||||
A few more notes on matching via `gitdir` and `gitdir/i`:
|
||||
|
||||
* Symlinks in `$GIT_DIR` are not resolved before matching.
|
||||
@ -220,11 +206,6 @@ Example
|
||||
[includeIf "gitdir:/path/to/group/"]
|
||||
path = foo.inc
|
||||
|
||||
; include only if we are in a worktree where foo-branch is
|
||||
; currently checked out
|
||||
[includeIf "onbranch:foo-branch"]
|
||||
path = foo.inc
|
||||
|
||||
Values
|
||||
~~~~~~
|
||||
|
||||
@ -441,8 +422,6 @@ include::config/submodule.txt[]
|
||||
|
||||
include::config/tag.txt[]
|
||||
|
||||
include::config/trace2.txt[]
|
||||
|
||||
include::config/transfer.txt[]
|
||||
|
||||
include::config/uploadarchive.txt[]
|
||||
|
@ -4,10 +4,6 @@ advice.*::
|
||||
can tell Git that you do not need help by setting these to 'false':
|
||||
+
|
||||
--
|
||||
fetchShowForcedUpdates::
|
||||
Advice shown when linkgit:git-fetch[1] takes a long time
|
||||
to calculate forced updates after ref updates, or to warn
|
||||
that the check is disabled.
|
||||
pushUpdateRejected::
|
||||
Set this variable to 'false' if you want to disable
|
||||
'pushNonFFCurrent',
|
||||
@ -41,19 +37,12 @@ advice.*::
|
||||
we can still suggest that the user push to either
|
||||
refs/heads/* or refs/tags/* based on the type of the
|
||||
source object.
|
||||
statusAheadBehind::
|
||||
Shown when linkgit:git-status[1] computes the ahead/behind
|
||||
counts for a local ref compared to its remote tracking ref,
|
||||
and that calculation takes longer than expected. Will not
|
||||
appear if `status.aheadBehind` is false or the option
|
||||
`--no-ahead-behind` is given.
|
||||
statusHints::
|
||||
Show directions on how to proceed from the current
|
||||
state in the output of linkgit:git-status[1], in
|
||||
the template shown when writing commit messages in
|
||||
linkgit:git-commit[1], and in the help message shown
|
||||
by linkgit:git-switch[1] or
|
||||
linkgit:git-checkout[1] when switching branch.
|
||||
by linkgit:git-checkout[1] when switching branch.
|
||||
statusUoption::
|
||||
Advise to consider using the `-u` option to linkgit:git-status[1]
|
||||
when the command takes more than 2 seconds to enumerate untracked
|
||||
@ -68,21 +57,17 @@ advice.*::
|
||||
resolveConflict::
|
||||
Advice shown by various commands when conflicts
|
||||
prevent the operation from being performed.
|
||||
sequencerInUse::
|
||||
Advice shown when a sequencer command is already in progress.
|
||||
implicitIdentity::
|
||||
Advice on how to set your identity configuration when
|
||||
your information is guessed from the system username and
|
||||
domain name.
|
||||
detachedHead::
|
||||
Advice shown when you used
|
||||
linkgit:git-switch[1] or linkgit:git-checkout[1]
|
||||
to move to the detach HEAD state, to instruct how to
|
||||
create a local branch after the fact.
|
||||
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.
|
||||
checkoutAmbiguousRemoteBranchName::
|
||||
Advice shown when the argument to
|
||||
linkgit:git-checkout[1] and linkgit:git-switch[1]
|
||||
ambiguously resolves to a
|
||||
linkgit:git-checkout[1] ambiguously resolves to a
|
||||
remote tracking branch on more than one remote in
|
||||
situations where an unambiguous argument would have
|
||||
otherwise caused a remote-tracking branch to be
|
||||
@ -105,6 +90,4 @@ advice.*::
|
||||
waitingForEditor::
|
||||
Print a message to the terminal whenever Git is waiting for
|
||||
editor input from the user.
|
||||
nestedTag::
|
||||
Advice shown if a user attempts to recursively tag a tag object.
|
||||
--
|
||||
|
@ -1,28 +1,18 @@
|
||||
alias.*::
|
||||
Command aliases for the linkgit:git[1] command wrapper - e.g.
|
||||
after defining `alias.last = cat-file commit HEAD`, the invocation
|
||||
`git last` is equivalent to `git cat-file commit HEAD`. To avoid
|
||||
after defining "alias.last = cat-file commit HEAD", the invocation
|
||||
"git last" is equivalent to "git cat-file commit HEAD". To avoid
|
||||
confusion and troubles with script usage, aliases that
|
||||
hide existing Git commands are ignored. Arguments are split by
|
||||
spaces, the usual shell quoting and escaping is supported.
|
||||
A quote pair or a backslash can be used to quote them.
|
||||
+
|
||||
Note that the first word of an alias does not necessarily have to be a
|
||||
command. It can be a command-line option that will be passed into the
|
||||
invocation of `git`. In particular, this is useful when used with `-c`
|
||||
to pass in one-time configurations or `-p` to force pagination. For example,
|
||||
`loud-rebase = -c commit.verbose=true rebase` can be defined such that
|
||||
running `git loud-rebase` would be equivalent to
|
||||
`git -c commit.verbose=true rebase`. Also, `ps = -p status` would be a
|
||||
helpful alias since `git ps` would paginate the output of `git status`
|
||||
where the original command does not.
|
||||
+
|
||||
If the alias expansion is prefixed with an exclamation point,
|
||||
it will be treated as a shell command. For example, defining
|
||||
`alias.new = !gitk --all --not ORIG_HEAD`, the invocation
|
||||
`git new` is equivalent to running the shell command
|
||||
`gitk --all --not ORIG_HEAD`. Note that shell commands will be
|
||||
"alias.new = !gitk --all --not ORIG_HEAD", the invocation
|
||||
"git new" is equivalent to running the shell command
|
||||
"gitk --all --not ORIG_HEAD". Note that shell commands will be
|
||||
executed from the top-level directory of a repository, which may
|
||||
not necessarily be the current directory.
|
||||
`GIT_PREFIX` is set as returned by running `git rev-parse --show-prefix`
|
||||
`GIT_PREFIX` is set as returned by running 'git rev-parse --show-prefix'
|
||||
from the original current directory. See linkgit:git-rev-parse[1].
|
||||
|
@ -19,19 +19,3 @@ blame.showEmail::
|
||||
blame.showRoot::
|
||||
Do not treat root commits as boundaries in linkgit:git-blame[1].
|
||||
This option defaults to false.
|
||||
|
||||
blame.ignoreRevsFile::
|
||||
Ignore revisions listed in the file, one unabbreviated object name per
|
||||
line, in linkgit:git-blame[1]. Whitespace and comments beginning with
|
||||
`#` are ignored. This option may be repeated multiple times. Empty
|
||||
file names will reset the list of ignored revisions. This option will
|
||||
be handled before the command line option `--ignore-revs-file`.
|
||||
|
||||
blame.markUnblamables::
|
||||
Mark lines that were changed by an ignored revision that we could not
|
||||
attribute to another commit with a '*' in the output of
|
||||
linkgit:git-blame[1].
|
||||
|
||||
blame.markIgnoredLines::
|
||||
Mark lines that were changed by an ignored revision that we attributed to
|
||||
another commit with a '?' in the output of linkgit:git-blame[1].
|
||||
|
@ -1,5 +1,5 @@
|
||||
branch.autoSetupMerge::
|
||||
Tells 'git branch', 'git switch' and 'git checkout' to set up new branches
|
||||
Tells 'git branch' and 'git checkout' to set up new branches
|
||||
so that linkgit:git-pull[1] will appropriately merge from the
|
||||
starting point branch. Note that even if this option is not set,
|
||||
this behavior can be chosen per-branch using the `--track`
|
||||
@ -11,7 +11,7 @@ branch.autoSetupMerge::
|
||||
branch. This option defaults to true.
|
||||
|
||||
branch.autoSetupRebase::
|
||||
When a new branch is created with 'git branch', 'git switch' 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
|
||||
up pull to rebase instead of merge (see "branch.<name>.rebase").
|
||||
When `never`, rebase is never automatically set to true.
|
||||
@ -85,9 +85,9 @@ When `merges`, pass the `--rebase-merges` option to 'git rebase'
|
||||
so that the local merge commits are included in the rebase (see
|
||||
linkgit:git-rebase[1] for details).
|
||||
+
|
||||
When `preserve` (deprecated in favor of `merges`), also pass
|
||||
`--preserve-merges` along to 'git rebase' so that locally committed merge
|
||||
commits will not be flattened by running 'git pull'.
|
||||
When preserve, also pass `--preserve-merges` along to 'git rebase'
|
||||
so that locally committed merge commits will not be flattened
|
||||
by running 'git pull'.
|
||||
+
|
||||
When the value is `interactive`, the rebase is run in interactive mode.
|
||||
+
|
||||
|
@ -1,6 +1,5 @@
|
||||
checkout.defaultRemote::
|
||||
When you run 'git checkout <something>'
|
||||
or 'git switch <something>' and only have one
|
||||
When you run 'git checkout <something>' and only have one
|
||||
remote, it may implicitly fall back on checking out and
|
||||
tracking e.g. 'origin/<something>'. This stops working as soon
|
||||
as you have more than one remote with a '<something>'
|
||||
@ -9,10 +8,16 @@ checkout.defaultRemote::
|
||||
disambiguation. The typical use-case is to set this to
|
||||
`origin`.
|
||||
+
|
||||
Currently this is used by linkgit:git-switch[1] and
|
||||
linkgit:git-checkout[1] when 'git checkout <something>'
|
||||
or 'git switch <something>'
|
||||
will checkout the '<something>' branch on another remote,
|
||||
Currently this is used by linkgit:git-checkout[1] when 'git checkout
|
||||
<something>' will checkout the '<something>' branch on another remote,
|
||||
and by linkgit:git-worktree[1] when 'git worktree add' refers to a
|
||||
remote branch. This setting might be used for other checkout-like
|
||||
commands or functionality in the future.
|
||||
|
||||
checkout.optimizeNewBranch::
|
||||
Optimizes the performance of "git checkout -b <new_branch>" when
|
||||
using sparse-checkout. When set to true, git will not update the
|
||||
repo based on the current sparse-checkout settings. This means it
|
||||
will not update the skip-worktree bit in the index nor add/remove
|
||||
files in the working directory to reflect the current sparse checkout
|
||||
settings nor will it show the local changes.
|
||||
|
@ -414,7 +414,7 @@ Common unit suffixes of 'k', 'm', or 'g' are supported.
|
||||
core.excludesFile::
|
||||
Specifies the pathname to the file that contains patterns to
|
||||
describe paths that are not meant to be tracked, in addition
|
||||
to `.gitignore` (per-directory) and `.git/info/exclude`.
|
||||
to '.gitignore' (per-directory) and '.git/info/exclude'.
|
||||
Defaults to `$XDG_CONFIG_HOME/git/ignore`.
|
||||
If `$XDG_CONFIG_HOME` is either not set or empty, `$HOME/.config/git/ignore`
|
||||
is used instead. See linkgit:gitignore[5].
|
||||
@ -429,8 +429,8 @@ core.askPass::
|
||||
command-line argument and write the password on its STDOUT.
|
||||
|
||||
core.attributesFile::
|
||||
In addition to `.gitattributes` (per-directory) and
|
||||
`.git/info/attributes`, Git looks into this file for attributes
|
||||
In addition to '.gitattributes' (per-directory) and
|
||||
'.git/info/attributes', Git looks into this file for attributes
|
||||
(see linkgit:gitattributes[5]). Path expansions are made the same
|
||||
way as for `core.excludesFile`. Its default value is
|
||||
`$XDG_CONFIG_HOME/git/attributes`. If `$XDG_CONFIG_HOME` is either not
|
||||
@ -438,10 +438,10 @@ core.attributesFile::
|
||||
|
||||
core.hooksPath::
|
||||
By default Git will look for your hooks in the
|
||||
`$GIT_DIR/hooks` directory. Set this to different path,
|
||||
e.g. `/etc/git/hooks`, and Git will try to find your hooks in
|
||||
that directory, e.g. `/etc/git/hooks/pre-receive` instead of
|
||||
in `$GIT_DIR/hooks/pre-receive`.
|
||||
'$GIT_DIR/hooks' directory. Set this to different path,
|
||||
e.g. '/etc/git/hooks', and Git will try to find your hooks in
|
||||
that directory, e.g. '/etc/git/hooks/pre-receive' instead of
|
||||
in '$GIT_DIR/hooks/pre-receive'.
|
||||
+
|
||||
The path can be either absolute or relative. A relative path is
|
||||
taken as relative to the directory where the hooks are run (see
|
||||
|
@ -10,7 +10,7 @@ diff.autoRefreshIndex::
|
||||
|
||||
diff.dirstat::
|
||||
A comma separated list of `--dirstat` parameters specifying the
|
||||
default behavior of the `--dirstat` option to linkgit:git-diff[1]
|
||||
default behavior of the `--dirstat` option to linkgit:git-diff[1]`
|
||||
and friends. The defaults can be overridden on the command line
|
||||
(using `--dirstat=<param1,param2,...>`). The fallback defaults
|
||||
(when not changed by `diff.dirstat`) are `changes,noncumulative,3`.
|
||||
@ -73,13 +73,12 @@ diff.external::
|
||||
environment variable. The command is called with parameters
|
||||
as described under "git Diffs" in linkgit:git[1]. Note: if
|
||||
you want to use an external diff program only on a subset of
|
||||
your files, you might want to use linkgit:gitattributes[5] instead.
|
||||
your files, you might want to use linkgit:gitattributes[5] instead.
|
||||
|
||||
diff.ignoreSubmodules::
|
||||
Sets the default value of --ignore-submodules. Note that this
|
||||
affects only 'git diff' Porcelain, and not lower level 'diff'
|
||||
commands such as 'git diff-files'. 'git checkout'
|
||||
and 'git switch' also honor
|
||||
commands such as 'git diff-files'. 'git checkout' also honors
|
||||
this setting when reporting uncommitted changes. Setting it to
|
||||
'all' disables the submodule summary normally shown by 'git commit'
|
||||
and 'git status' when `status.submoduleSummary` is set unless it is
|
||||
|
@ -63,8 +63,3 @@ fetch.negotiationAlgorithm::
|
||||
Unknown values will cause 'git fetch' to error out.
|
||||
+
|
||||
See also the `--negotiation-tip` option for linkgit:git-fetch[1].
|
||||
|
||||
fetch.showForcedUpdates::
|
||||
Set to false to enable `--no-show-forced-updates` in
|
||||
linkgit:git-fetch[1] and linkgit:git-pull[1] commands.
|
||||
Defaults to true.
|
||||
|
@ -85,18 +85,3 @@ format.outputDirectory::
|
||||
format.useAutoBase::
|
||||
A boolean value which lets you enable the `--base=auto` option of
|
||||
format-patch by default.
|
||||
|
||||
format.notes::
|
||||
Provides the default value for the `--notes` option to
|
||||
format-patch. Accepts a boolean value, or a ref which specifies
|
||||
where to get notes. If false, format-patch defaults to
|
||||
`--no-notes`. If true, format-patch defaults to `--notes`. If
|
||||
set to a non-boolean value, format-patch defaults to
|
||||
`--notes=<ref>`, where `ref` is the non-boolean value. Defaults
|
||||
to false.
|
||||
+
|
||||
If one wishes to use the ref `ref/notes/true`, please use that literal
|
||||
instead.
|
||||
+
|
||||
This configuration can be specified multiple times in order to allow
|
||||
multiple notes refs to be included.
|
||||
|
@ -23,9 +23,9 @@ When `fsck.<msg-id>` is set, errors can be switched to warnings and
|
||||
vice versa by configuring the `fsck.<msg-id>` setting where the
|
||||
`<msg-id>` is the fsck message ID and the value is one of `error`,
|
||||
`warn` or `ignore`. For convenience, fsck prefixes the error/warning
|
||||
with the message ID, e.g. "missingEmail: invalid author/committer
|
||||
line - missing email" means that setting `fsck.missingEmail = ignore`
|
||||
will hide that issue.
|
||||
with the message ID, e.g. "missingEmail: invalid author/committer line
|
||||
- missing email" means that setting `fsck.missingEmail = ignore` will
|
||||
hide that issue.
|
||||
+
|
||||
In general, it is better to enumerate existing objects with problems
|
||||
with `fsck.skipList`, instead of listing the kind of breakages these
|
||||
|
@ -1,42 +1,25 @@
|
||||
gc.aggressiveDepth::
|
||||
The depth parameter used in the delta compression
|
||||
algorithm used by 'git gc --aggressive'. This defaults
|
||||
to 50, which is the default for the `--depth` option when
|
||||
`--aggressive` isn't in use.
|
||||
+
|
||||
See the documentation for the `--depth` option in
|
||||
linkgit:git-repack[1] for more details.
|
||||
to 50.
|
||||
|
||||
gc.aggressiveWindow::
|
||||
The window size parameter used in the delta compression
|
||||
algorithm used by 'git gc --aggressive'. This defaults
|
||||
to 250, which is a much more aggressive window size than
|
||||
the default `--window` of 10.
|
||||
+
|
||||
See the documentation for the `--window` option in
|
||||
linkgit:git-repack[1] for more details.
|
||||
to 250.
|
||||
|
||||
gc.auto::
|
||||
When there are approximately more than this many loose
|
||||
objects in the repository, `git gc --auto` will pack them.
|
||||
Some Porcelain commands use this command to perform a
|
||||
light-weight garbage collection from time to time. The
|
||||
default value is 6700.
|
||||
+
|
||||
Setting this to 0 disables not only automatic packing based on the
|
||||
number of loose objects, but any other heuristic `git gc --auto` will
|
||||
otherwise use to determine if there's work to do, such as
|
||||
`gc.autoPackLimit`.
|
||||
default value is 6700. Setting this to 0 disables it.
|
||||
|
||||
gc.autoPackLimit::
|
||||
When there are more than this many packs that are not
|
||||
marked with `*.keep` file in the repository, `git gc
|
||||
--auto` consolidates them into one larger pack. The
|
||||
default value is 50. Setting this to 0 disables it.
|
||||
Setting `gc.auto` to 0 will also disable this.
|
||||
+
|
||||
See the `gc.bigPackThreshold` configuration variable below. When in
|
||||
use, it'll affect how the auto pack limit works.
|
||||
default value is 50. Setting this to 0 disables it.
|
||||
|
||||
gc.autoDetach::
|
||||
Make `git gc --auto` return immediately and run in background
|
||||
@ -53,16 +36,11 @@ Note that if the number of kept packs is more than gc.autoPackLimit,
|
||||
this configuration variable is ignored, all packs except the base pack
|
||||
will be repacked. After this the number of packs should go below
|
||||
gc.autoPackLimit and gc.bigPackThreshold should be respected again.
|
||||
+
|
||||
If the amount of memory estimated for `git repack` to run smoothly is
|
||||
not available and `gc.bigPackThreshold` is not set, the largest pack
|
||||
will also be excluded (this is the equivalent of running `git gc` with
|
||||
`--keep-base-pack`).
|
||||
|
||||
gc.writeCommitGraph::
|
||||
If true, then gc will rewrite the commit-graph file when
|
||||
linkgit:git-gc[1] is run. When using `git gc --auto`
|
||||
the commit-graph will be updated if housekeeping is
|
||||
linkgit:git-gc[1] is run. When using linkgit:git-gc[1]
|
||||
'--auto' the commit-graph will be updated if housekeeping is
|
||||
required. Default is false. See linkgit:git-commit-graph[1]
|
||||
for details.
|
||||
|
||||
@ -116,12 +94,6 @@ gc.<pattern>.reflogExpireUnreachable::
|
||||
With "<pattern>" (e.g. "refs/stash")
|
||||
in the middle, the setting applies only to the refs that
|
||||
match the <pattern>.
|
||||
+
|
||||
These types of entries are generally created as a result of using `git
|
||||
commit --amend` or `git rebase` and are the commits prior to the amend
|
||||
or rebase occurring. Since these changes are not part of the current
|
||||
project most users will want to expire them sooner, which is why the
|
||||
default is more aggressive than `gc.reflogExpire`.
|
||||
|
||||
gc.rerereResolved::
|
||||
Records of conflicted merge you resolved earlier are
|
||||
|
@ -2,7 +2,7 @@ gpg.program::
|
||||
Use this custom program instead of "`gpg`" found on `$PATH` when
|
||||
making or verifying a PGP signature. The program must support the
|
||||
same command-line interface as GPG, namely, to verify a detached
|
||||
signature, "`gpg --verify $signature - <$file`" is run, and the
|
||||
signature, "`gpg --verify $file - <$signature`" is run, and the
|
||||
program is expected to signal a good signature by exiting with
|
||||
code 0, and to generate an ASCII-armored detached signature, the
|
||||
standard input of "`gpg -bsau $key`" is fed with the contents to be
|
||||
@ -16,5 +16,5 @@ gpg.format::
|
||||
gpg.<format>.program::
|
||||
Use this to customize the program used for the signing format you
|
||||
chose. (see `gpg.program` and `gpg.format`) `gpg.program` can still
|
||||
be used as a legacy synonym for `gpg.openpgp.program`. The default
|
||||
be used as a legacy synonym for `gpg.openpgp.program`. The default
|
||||
value for `gpg.x509.program` is "gpgsm".
|
||||
|
@ -2,8 +2,7 @@ interactive.singleKey::
|
||||
In interactive commands, allow the user to provide one-letter
|
||||
input with a single key (i.e., without hitting enter).
|
||||
Currently this is used by the `--patch` mode of
|
||||
linkgit:git-add[1], linkgit:git-checkout[1],
|
||||
linkgit:git-restore[1], linkgit:git-commit[1],
|
||||
linkgit:git-add[1], linkgit:git-checkout[1], linkgit:git-commit[1],
|
||||
linkgit:git-reset[1], and linkgit:git-stash[1]. Note that this
|
||||
setting is silently ignored if portable keystroke input
|
||||
is not available; requires the Perl module Term::ReadKey.
|
||||
|
@ -40,5 +40,4 @@ log.showSignature::
|
||||
|
||||
log.mailmap::
|
||||
If true, makes linkgit:git-log[1], linkgit:git-show[1], and
|
||||
linkgit:git-whatchanged[1] assume `--use-mailmap`, otherwise
|
||||
assume `--no-use-mailmap`. False by default.
|
||||
linkgit:git-whatchanged[1] assume `--use-mailmap`.
|
||||
|
@ -39,22 +39,9 @@ merge.renameLimit::
|
||||
is turned off.
|
||||
|
||||
merge.renames::
|
||||
Whether Git detects renames. If set to "false", rename detection
|
||||
is disabled. If set to "true", basic rename detection is enabled.
|
||||
Defaults to the value of diff.renames.
|
||||
|
||||
merge.directoryRenames::
|
||||
Whether Git detects directory renames, affecting what happens at
|
||||
merge time to new files added to a directory on one side of
|
||||
history when that directory was renamed on the other side of
|
||||
history. If merge.directoryRenames is set to "false", directory
|
||||
rename detection is disabled, meaning that such new files will be
|
||||
left behind in the old directory. If set to "true", directory
|
||||
rename detection is enabled, meaning that such new files will be
|
||||
moved into the new directory. If set to "conflict", a conflict
|
||||
will be reported for such paths. If merge.renames is false,
|
||||
merge.directoryRenames is ignored and treated as false. Defaults
|
||||
to "conflict".
|
||||
Whether and how Git detects renames. If set to "false",
|
||||
rename detection is disabled. If set to "true", basic rename
|
||||
detection is enabled. Defaults to the value of diff.renames.
|
||||
|
||||
merge.renormalize::
|
||||
Tell Git that canonical representation of files in the
|
||||
|
@ -124,4 +124,6 @@ pack.writeBitmapHashCache::
|
||||
bitmapped and non-bitmapped objects (e.g., when serving a fetch
|
||||
between an older, bitmapped pack and objects that have been
|
||||
pushed since the last gc). The downside is that it consumes 4
|
||||
bytes per object of disk space. Defaults to true.
|
||||
bytes per object of disk space, and that JGit's bitmap
|
||||
implementation does not understand it, causing it to complain if
|
||||
Git and JGit are used on the same repository. Defaults to false.
|
||||
|
@ -18,9 +18,9 @@ When `merges`, pass the `--rebase-merges` option to 'git rebase'
|
||||
so that the local merge commits are included in the rebase (see
|
||||
linkgit:git-rebase[1] for details).
|
||||
+
|
||||
When `preserve` (deprecated in favor of `merges`), also pass
|
||||
`--preserve-merges` along to 'git rebase' so that locally committed merge
|
||||
commits will not be flattened by running 'git pull'.
|
||||
When preserve, also pass `--preserve-merges` along to 'git rebase'
|
||||
so that locally committed merge commits will not be flattened
|
||||
by running 'git pull'.
|
||||
+
|
||||
When the value is `interactive`, the rebase is run in interactive mode.
|
||||
+
|
||||
|
@ -1,9 +1,16 @@
|
||||
rebase.useBuiltin::
|
||||
Unused configuration variable. Used in Git versions 2.20 and
|
||||
2.21 as an escape hatch to enable the legacy shellscript
|
||||
implementation of rebase. Now the built-in rewrite of it in C
|
||||
is always used. Setting this will emit a warning, to alert any
|
||||
remaining users that setting this now does nothing.
|
||||
Set to `false` to use the legacy shellscript implementation of
|
||||
linkgit:git-rebase[1]. Is `true` by default, which means use
|
||||
the built-in rewrite of it in C.
|
||||
+
|
||||
The C rewrite is first included with Git version 2.20. This option
|
||||
serves an an escape hatch to re-enable the legacy version in case any
|
||||
bugs are found in the rewrite. This option and the shellscript version
|
||||
of linkgit:git-rebase[1] will be removed in some future release.
|
||||
+
|
||||
If you find some reason to set this option to `false` other than
|
||||
one-off testing you should report the behavior difference as a bug in
|
||||
git.
|
||||
|
||||
rebase.stat::
|
||||
Whether to show a diffstat of what changed upstream since the last
|
||||
|
@ -24,4 +24,4 @@ repack.writeBitmaps::
|
||||
packs created for clones and fetches, at the cost of some disk
|
||||
space and extra time spent on the initial repack. This has
|
||||
no effect if multiple packfiles are created.
|
||||
Defaults to true on bare repos, false otherwise.
|
||||
Defaults to false.
|
||||
|
@ -1,18 +1,3 @@
|
||||
stash.useBuiltin::
|
||||
Set to `false` to use the legacy shell script implementation of
|
||||
linkgit:git-stash[1]. Is `true` by default, which means use
|
||||
the built-in rewrite of it in C.
|
||||
+
|
||||
The C rewrite is first included with Git version 2.22 (and Git for Windows
|
||||
version 2.19). This option serves an an escape hatch to re-enable the
|
||||
legacy version in case any bugs are found in the rewrite. This option and
|
||||
the shell script version of linkgit:git-stash[1] will be removed in some
|
||||
future release.
|
||||
+
|
||||
If you find some reason to set this option to `false`, other than
|
||||
one-off testing, you should report the behavior difference as a bug in
|
||||
Git (see https://git-scm.com/community for details).
|
||||
|
||||
stash.showPatch::
|
||||
If this is set to true, the `git stash show` command without an
|
||||
option will show the stash entry in patch form. Defaults to false.
|
||||
|
@ -12,11 +12,6 @@ status.branch::
|
||||
Set to true to enable --branch by default in linkgit:git-status[1].
|
||||
The option --no-branch takes precedence over this variable.
|
||||
|
||||
status.aheadBehind::
|
||||
Set to true to enable `--ahead-behind` and false to enable
|
||||
`--no-ahead-behind` by default in linkgit:git-status[1] for
|
||||
non-porcelain status formats. Defaults to true.
|
||||
|
||||
status.displayCommentPrefix::
|
||||
If set to true, linkgit:git-status[1] will insert a comment
|
||||
prefix before each output line (starting with
|
||||
|
@ -8,14 +8,6 @@ tag.sort::
|
||||
linkgit:git-tag[1]. Without the "--sort=<value>" option provided, the
|
||||
value of this variable will be used as the default.
|
||||
|
||||
tag.gpgSign::
|
||||
A boolean to specify whether all tags should be GPG signed.
|
||||
Use of this option when running in an automated script can
|
||||
result in a large number of tags being signed. It is therefore
|
||||
convenient to use an agent to avoid typing your gpg passphrase
|
||||
several times. Note that this option doesn't affects tag signing
|
||||
behavior enabled by "-u <keyid>" or "--local-user=<keyid>" options.
|
||||
|
||||
tar.umask::
|
||||
This variable can be used to restrict the permission bits of
|
||||
tar archive entries. The default is 0002, which turns off the
|
||||
|
@ -1,56 +0,0 @@
|
||||
Trace2 config settings are only read from the system and global
|
||||
config files; repository local and worktree config files and `-c`
|
||||
command line arguments are not respected.
|
||||
|
||||
trace2.normalTarget::
|
||||
This variable controls the normal target destination.
|
||||
It may be overridden by the `GIT_TRACE2` environment variable.
|
||||
The following table shows possible values.
|
||||
|
||||
trace2.perfTarget::
|
||||
This variable controls the performance target destination.
|
||||
It may be overridden by the `GIT_TRACE2_PERF` environment variable.
|
||||
The following table shows possible values.
|
||||
|
||||
trace2.eventTarget::
|
||||
This variable controls the event target destination.
|
||||
It may be overridden by the `GIT_TRACE2_EVENT` environment variable.
|
||||
The following table shows possible values.
|
||||
+
|
||||
include::../trace2-target-values.txt[]
|
||||
|
||||
trace2.normalBrief::
|
||||
Boolean. When true `time`, `filename`, and `line` fields are
|
||||
omitted from normal output. May be overridden by the
|
||||
`GIT_TRACE2_BRIEF` environment variable. Defaults to false.
|
||||
|
||||
trace2.perfBrief::
|
||||
Boolean. When true `time`, `filename`, and `line` fields are
|
||||
omitted from PERF output. May be overridden by the
|
||||
`GIT_TRACE2_PERF_BRIEF` environment variable. Defaults to false.
|
||||
|
||||
trace2.eventBrief::
|
||||
Boolean. When true `time`, `filename`, and `line` fields are
|
||||
omitted from event output. May be overridden by the
|
||||
`GIT_TRACE2_EVENT_BRIEF` environment variable. Defaults to false.
|
||||
|
||||
trace2.eventNesting::
|
||||
Integer. Specifies desired depth of nested regions in the
|
||||
event output. Regions deeper than this value will be
|
||||
omitted. May be overridden by the `GIT_TRACE2_EVENT_NESTING`
|
||||
environment variable. Defaults to 2.
|
||||
|
||||
trace2.configParams::
|
||||
A comma-separated list of patterns of "important" config
|
||||
settings that should be recorded in the trace2 output.
|
||||
For example, `core.*,remote.*.url` would cause the trace2
|
||||
output to contain events listing each configured remote.
|
||||
May be overridden by the `GIT_TRACE2_CONFIG_PARAMS` environment
|
||||
variable. Unset by default.
|
||||
|
||||
trace2.destinationDebug::
|
||||
Boolean. When true Git will print error messages when a
|
||||
trace target destination cannot be opened for writing.
|
||||
By default, these errors are suppressed and tracing is
|
||||
silently disabled. May be overridden by the
|
||||
`GIT_TRACE2_DST_DEBUG` environment variable.
|
@ -1,19 +1,12 @@
|
||||
user.name::
|
||||
user.email::
|
||||
author.name::
|
||||
author.email::
|
||||
committer.name::
|
||||
committer.email::
|
||||
The `user.name` and `user.email` variables determine what ends
|
||||
up in the `author` and `committer` field of commit
|
||||
objects.
|
||||
If you need the `author` or `committer` to be different, the
|
||||
`author.name`, `author.email`, `committer.name` or
|
||||
`committer.email` variables can be set.
|
||||
Also, all of these can be overridden by the `GIT_AUTHOR_NAME`,
|
||||
`GIT_AUTHOR_EMAIL`, `GIT_COMMITTER_NAME`,
|
||||
`GIT_COMMITTER_EMAIL` and `EMAIL` environment variables.
|
||||
See linkgit:git-commit-tree[1] for more information.
|
||||
Your email address to be recorded in any newly created commits.
|
||||
Can be overridden by the `GIT_AUTHOR_EMAIL`, `GIT_COMMITTER_EMAIL`, and
|
||||
`EMAIL` environment variables. See linkgit:git-commit-tree[1].
|
||||
|
||||
user.name::
|
||||
Your full name to be recorded in any newly created commits.
|
||||
Can be overridden by the `GIT_AUTHOR_NAME` and `GIT_COMMITTER_NAME`
|
||||
environment variables. See linkgit:git-commit-tree[1].
|
||||
|
||||
user.useConfigOnly::
|
||||
Instruct Git to avoid trying to guess defaults for `user.email`
|
||||
|
@ -95,26 +95,12 @@ from the format described above in the following way:
|
||||
. there are more "src" modes and "src" sha1
|
||||
. status is concatenated status characters for each parent
|
||||
. no optional "score" number
|
||||
. tab-separated pathname(s) of the file
|
||||
. single path, only for "dst"
|
||||
|
||||
For `-c` and `--cc`, only the destination or final path is shown even
|
||||
if the file was renamed on any side of history. With
|
||||
`--combined-all-paths`, the name of the path in each parent is shown
|
||||
followed by the name of the path in the merge commit.
|
||||
|
||||
Examples for `-c` and `--cc` without `--combined-all-paths`:
|
||||
------------------------------------------------
|
||||
::100644 100644 100644 fabadb8 cc95eb0 4866510 MM desc.c
|
||||
::100755 100755 100755 52b7a2d 6d1ac04 d2ac7d7 RM bar.sh
|
||||
::100644 100644 100644 e07d6c5 9042e82 ee91881 RR phooey.c
|
||||
------------------------------------------------
|
||||
|
||||
Examples when `--combined-all-paths` added to either `-c` or `--cc`:
|
||||
Example:
|
||||
|
||||
------------------------------------------------
|
||||
::100644 100644 100644 fabadb8 cc95eb0 4866510 MM desc.c desc.c desc.c
|
||||
::100755 100755 100755 52b7a2d 6d1ac04 d2ac7d7 RM foo.sh bar.sh bar.sh
|
||||
::100644 100644 100644 e07d6c5 9042e82 ee91881 RR fooey.c fuey.c phooey.c
|
||||
::100644 100644 100644 fabadb8 cc95eb0 4866510 MM describe.c
|
||||
------------------------------------------------
|
||||
|
||||
Note that 'combined diff' lists only files which were modified from
|
||||
|
@ -143,19 +143,6 @@ copying detection) are designed to work with diff of two
|
||||
Similar to two-line header for traditional 'unified' diff
|
||||
format, `/dev/null` is used to signal created or deleted
|
||||
files.
|
||||
+
|
||||
However, if the --combined-all-paths option is provided, instead of a
|
||||
two-line from-file/to-file you get a N+1 line from-file/to-file header,
|
||||
where N is the number of parents in the merge commit
|
||||
|
||||
--- a/file
|
||||
--- a/file
|
||||
--- a/file
|
||||
+++ b/file
|
||||
+
|
||||
This extended format can be useful if rename or copy detection is
|
||||
active, to allow you to see the original name of the file in different
|
||||
parents.
|
||||
|
||||
4. Chunk header format is modified to prevent people from
|
||||
accidentally feeding it to `patch -p1`. Combined diff format
|
||||
|
@ -36,21 +36,11 @@ endif::git-format-patch[]
|
||||
-U<n>::
|
||||
--unified=<n>::
|
||||
Generate diffs with <n> lines of context instead of
|
||||
the usual three. Implies `--patch`.
|
||||
the usual three.
|
||||
ifndef::git-format-patch[]
|
||||
Implies `-p`.
|
||||
endif::git-format-patch[]
|
||||
|
||||
--output=<file>::
|
||||
Output to a specific file instead of stdout.
|
||||
|
||||
--output-indicator-new=<char>::
|
||||
--output-indicator-old=<char>::
|
||||
--output-indicator-context=<char>::
|
||||
Specify the character used to indicate new, old or context
|
||||
lines in the generated patch. Normally they are '+', '-' and
|
||||
' ' respectively.
|
||||
|
||||
ifndef::git-format-patch[]
|
||||
--raw::
|
||||
ifndef::git-log[]
|
||||
@ -158,7 +148,6 @@ These parameters can also be set individually with `--stat-width=<width>`,
|
||||
number of modified files, as well as number of added and deleted
|
||||
lines.
|
||||
|
||||
-X[<param1,param2,...>]::
|
||||
--dirstat[=<param1,param2,...>]::
|
||||
Output the distribution of relative amount of changes for each
|
||||
sub-directory. The behavior of `--dirstat` can be customized by
|
||||
@ -203,12 +192,6 @@ directories with less than 10% of the total amount of changed files,
|
||||
and accumulating child directory counts in the parent directories:
|
||||
`--dirstat=files,10,cumulative`.
|
||||
|
||||
--cumulative::
|
||||
Synonym for --dirstat=cumulative
|
||||
|
||||
--dirstat-by-file[=<param1,param2>...]::
|
||||
Synonym for --dirstat=files,param1,param2...
|
||||
|
||||
--summary::
|
||||
Output a condensed summary of extended header information
|
||||
such as creations, renames and mode changes.
|
||||
@ -403,9 +386,6 @@ endif::git-format-patch[]
|
||||
Turn off rename detection, even when the configuration
|
||||
file gives the default to do so.
|
||||
|
||||
--[no-]rename-empty::
|
||||
Whether to use empty blobs as rename source.
|
||||
|
||||
ifndef::git-format-patch[]
|
||||
--check::
|
||||
Warn if changes introduce conflict markers or whitespace errors.
|
||||
@ -436,7 +416,7 @@ endif::git-format-patch[]
|
||||
|
||||
--binary::
|
||||
In addition to `--full-index`, output a binary diff that
|
||||
can be applied with `git-apply`. Implies `--patch`.
|
||||
can be applied with `git-apply`.
|
||||
|
||||
--abbrev[=<n>]::
|
||||
Instead of showing the full 40-byte hexadecimal object
|
||||
|
@ -12,16 +12,9 @@ OPTIONS_SPEC="\
|
||||
doc-diff [options] <from> <to> [-- <diff-options>]
|
||||
doc-diff (-c|--clean)
|
||||
--
|
||||
j=n parallel argument to pass to make
|
||||
f force rebuild; do not rely on cached results
|
||||
c,clean cleanup temporary working files
|
||||
from-asciidoc use asciidoc with the 'from'-commit
|
||||
from-asciidoctor use asciidoctor with the 'from'-commit
|
||||
asciidoc use asciidoc with both commits
|
||||
to-asciidoc use asciidoc with the 'to'-commit
|
||||
to-asciidoctor use asciidoctor with the 'to'-commit
|
||||
asciidoctor use asciidoctor with both commits
|
||||
cut-header-footer cut away header and footer
|
||||
j=n parallel argument to pass to make
|
||||
f force rebuild; do not rely on cached results
|
||||
c,clean cleanup temporary working files
|
||||
"
|
||||
SUBDIRECTORY_OK=1
|
||||
. "$(git --exec-path)/git-sh-setup"
|
||||
@ -29,9 +22,6 @@ SUBDIRECTORY_OK=1
|
||||
parallel=
|
||||
force=
|
||||
clean=
|
||||
from_program=
|
||||
to_program=
|
||||
cut_header_footer=
|
||||
while test $# -gt 0
|
||||
do
|
||||
case "$1" in
|
||||
@ -41,22 +31,6 @@ do
|
||||
clean=t ;;
|
||||
-f)
|
||||
force=t ;;
|
||||
--from-asciidoctor)
|
||||
from_program=-asciidoctor ;;
|
||||
--to-asciidoctor)
|
||||
to_program=-asciidoctor ;;
|
||||
--asciidoctor)
|
||||
from_program=-asciidoctor
|
||||
to_program=-asciidoctor ;;
|
||||
--from-asciidoc)
|
||||
from_program=-asciidoc ;;
|
||||
--to-asciidoc)
|
||||
to_program=-asciidoc ;;
|
||||
--asciidoc)
|
||||
from_program=-asciidoc
|
||||
to_program=-asciidoc ;;
|
||||
--cut-header-footer)
|
||||
cut_header_footer=-cut-header-footer ;;
|
||||
--)
|
||||
shift; break ;;
|
||||
*)
|
||||
@ -105,22 +79,6 @@ then
|
||||
ln -s "$dots/config.mak" "$tmp/worktree/config.mak"
|
||||
fi
|
||||
|
||||
construct_makemanflags () {
|
||||
if test "$1" = "-asciidoc"
|
||||
then
|
||||
echo USE_ASCIIDOCTOR=
|
||||
elif test "$1" = "-asciidoctor"
|
||||
then
|
||||
echo USE_ASCIIDOCTOR=YesPlease
|
||||
fi
|
||||
}
|
||||
|
||||
from_makemanflags=$(construct_makemanflags "$from_program") &&
|
||||
to_makemanflags=$(construct_makemanflags "$to_program") &&
|
||||
|
||||
from_dir=$from_oid$from_program$cut_header_footer &&
|
||||
to_dir=$to_oid$to_program$cut_header_footer &&
|
||||
|
||||
# generate_render_makefile <srcdir> <dstdir>
|
||||
generate_render_makefile () {
|
||||
find "$1" -type f |
|
||||
@ -136,7 +94,7 @@ generate_render_makefile () {
|
||||
done
|
||||
}
|
||||
|
||||
# render_tree <committish_oid> <directory_name> <makemanflags>
|
||||
# render_tree <committish_oid>
|
||||
render_tree () {
|
||||
# Skip install-man entirely if we already have an installed directory.
|
||||
# We can't rely on make here, since "install-man" unconditionally
|
||||
@ -144,44 +102,28 @@ render_tree () {
|
||||
# we then can't rely on during the render step). We use "mv" to make
|
||||
# sure we don't get confused by a previous run that failed partway
|
||||
# through.
|
||||
oid=$1 &&
|
||||
dname=$2 &&
|
||||
makemanflags=$3 &&
|
||||
if ! test -d "$tmp/installed/$dname"
|
||||
if ! test -d "$tmp/installed/$1"
|
||||
then
|
||||
git -C "$tmp/worktree" checkout --detach "$oid" &&
|
||||
git -C "$tmp/worktree" checkout --detach "$1" &&
|
||||
make -j$parallel -C "$tmp/worktree" \
|
||||
$makemanflags \
|
||||
GIT_VERSION=omitted \
|
||||
SOURCE_DATE_EPOCH=0 \
|
||||
DESTDIR="$tmp/installed/$dname+" \
|
||||
DESTDIR="$tmp/installed/$1+" \
|
||||
install-man &&
|
||||
mv "$tmp/installed/$dname+" "$tmp/installed/$dname"
|
||||
mv "$tmp/installed/$1+" "$tmp/installed/$1"
|
||||
fi &&
|
||||
|
||||
# As with "installed" above, we skip the render if it's already been
|
||||
# done. So using make here is primarily just about running in
|
||||
# parallel.
|
||||
if ! test -d "$tmp/rendered/$dname"
|
||||
if ! test -d "$tmp/rendered/$1"
|
||||
then
|
||||
generate_render_makefile "$tmp/installed/$dname" \
|
||||
"$tmp/rendered/$dname+" |
|
||||
generate_render_makefile "$tmp/installed/$1" "$tmp/rendered/$1+" |
|
||||
make -j$parallel -f - &&
|
||||
mv "$tmp/rendered/$dname+" "$tmp/rendered/$dname"
|
||||
|
||||
if test "$cut_header_footer" = "-cut-header-footer"
|
||||
then
|
||||
for f in $(find "$tmp/rendered/$dname" -type f)
|
||||
do
|
||||
tail -n +3 "$f" | head -n -2 |
|
||||
sed -e '1{/^$/d}' -e '${/^$/d}' >"$f+" &&
|
||||
mv "$f+" "$f" ||
|
||||
return 1
|
||||
done
|
||||
fi
|
||||
mv "$tmp/rendered/$1+" "$tmp/rendered/$1"
|
||||
fi
|
||||
}
|
||||
|
||||
render_tree $from_oid $from_dir $from_makemanflags &&
|
||||
render_tree $to_oid $to_dir $to_makemanflags &&
|
||||
git -C $tmp/rendered diff --no-index "$@" $from_dir $to_dir
|
||||
render_tree $from_oid &&
|
||||
render_tree $to_oid &&
|
||||
git -C $tmp/rendered diff --no-index "$@" $from_oid $to_oid
|
||||
|
@ -88,10 +88,6 @@ ifndef::git-pull[]
|
||||
Allow several <repository> and <group> arguments to be
|
||||
specified. No <refspec>s may be specified.
|
||||
|
||||
--[no-]auto-gc::
|
||||
Run `git gc --auto` at the end to perform garbage collection
|
||||
if needed. This is enabled by default.
|
||||
|
||||
-p::
|
||||
--prune::
|
||||
Before fetching, remove any remote-tracking references that no
|
||||
@ -220,24 +216,10 @@ endif::git-pull[]
|
||||
--server-option=<option>::
|
||||
Transmit the given string to the server when communicating using
|
||||
protocol version 2. The given string must not contain a NUL or LF
|
||||
character. The server's handling of server options, including
|
||||
unknown ones, is server-specific.
|
||||
character.
|
||||
When multiple `--server-option=<option>` are given, they are all
|
||||
sent to the other side in the order listed on the command line.
|
||||
|
||||
--show-forced-updates::
|
||||
By default, git checks if a branch is force-updated during
|
||||
fetch. This can be disabled through fetch.showForcedUpdates, but
|
||||
the --show-forced-updates option guarantees this check occurs.
|
||||
See linkgit:git-config[1].
|
||||
|
||||
--no-show-forced-updates::
|
||||
By default, git checks if a branch is force-updated during
|
||||
fetch. Pass --no-show-forced-updates or set fetch.showForcedUpdates
|
||||
to false to skip this check for performance reasons. If used during
|
||||
'git-pull' the --ff-only option will still check for forced updates
|
||||
before attempting a fast-forward update. See linkgit:git-config[1].
|
||||
|
||||
-4::
|
||||
--ipv4::
|
||||
Use IPv4 addresses only, ignoring IPv6 addresses.
|
||||
|
@ -193,6 +193,15 @@ for "git add --no-all <pathspec>...", i.e. ignored removed files.
|
||||
for command-line options).
|
||||
|
||||
|
||||
CONFIGURATION
|
||||
-------------
|
||||
|
||||
The optional configuration variable `core.excludesFile` indicates a path to a
|
||||
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
|
||||
those in info/exclude. See linkgit:gitignore[5].
|
||||
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
|
@ -99,11 +99,6 @@ default. You can use `--no-utf8` to override this.
|
||||
am.threeWay configuration variable. For more information,
|
||||
see am.threeWay in linkgit:git-config[1].
|
||||
|
||||
--rerere-autoupdate::
|
||||
--no-rerere-autoupdate::
|
||||
Allow the rerere mechanism to update the index with the
|
||||
result of auto-conflict resolution if possible.
|
||||
|
||||
--ignore-space-change::
|
||||
--ignore-whitespace::
|
||||
--whitespace=<option>::
|
||||
|
@ -10,7 +10,6 @@ SYNOPSIS
|
||||
[verse]
|
||||
'git blame' [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [--incremental]
|
||||
[-L <range>] [-S <revs-file>] [-M] [-C] [-C] [-C] [--since=<date>]
|
||||
[--ignore-rev <rev>] [--ignore-revs-file <file>]
|
||||
[--progress] [--abbrev=<n>] [<rev> | --contents <file> | --reverse <rev>..<rev>]
|
||||
[--] <file>
|
||||
|
||||
|
@ -8,14 +8,12 @@ git-branch - List, create, or delete branches
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git branch' [--color[=<when>] | --no-color] [--show-current]
|
||||
[-v [--abbrev=<length> | --no-abbrev]]
|
||||
'git branch' [--color[=<when>] | --no-color] [-r | -a]
|
||||
[--list] [-v [--abbrev=<length> | --no-abbrev]]
|
||||
[--column[=<options>] | --no-column] [--sort=<key>]
|
||||
[(--merged | --no-merged) [<commit>]]
|
||||
[--contains [<commit]] [--no-contains [<commit>]]
|
||||
[--points-at <object>] [--format=<format>]
|
||||
[(-r | --remotes) | (-a | --all)]
|
||||
[--list] [<pattern>...]
|
||||
[--points-at <object>] [--format=<format>] [<pattern>...]
|
||||
'git branch' [--track | --no-track] [-f] <branchname> [<start-point>]
|
||||
'git branch' (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
|
||||
'git branch' --unset-upstream [<branchname>]
|
||||
@ -28,19 +26,13 @@ DESCRIPTION
|
||||
-----------
|
||||
|
||||
If `--list` is given, or if there are no non-option arguments, existing
|
||||
branches are listed; the current branch will be highlighted in green and
|
||||
marked with an asterisk. Any branches checked out in linked worktrees will
|
||||
be highlighted in cyan and marked with a plus sign. Option `-r` causes the
|
||||
remote-tracking branches to be listed,
|
||||
and option `-a` shows both local and remote branches.
|
||||
|
||||
If a `<pattern>`
|
||||
branches are listed; the current branch will be highlighted with an
|
||||
asterisk. Option `-r` causes the remote-tracking branches to be listed,
|
||||
and option `-a` shows both local and remote branches. If a `<pattern>`
|
||||
is given, it is used as a shell wildcard to restrict the output to
|
||||
matching branches. If multiple patterns are given, a branch is shown if
|
||||
it matches any of the patterns.
|
||||
|
||||
Note that when providing a
|
||||
`<pattern>`, you must use `--list`; otherwise the command may be interpreted
|
||||
it matches any of the patterns. Note that when providing a
|
||||
`<pattern>`, you must use `--list`; otherwise the command is interpreted
|
||||
as branch creation.
|
||||
|
||||
With `--contains`, shows only the branches that contain the named commit
|
||||
@ -53,14 +45,10 @@ argument is missing it defaults to `HEAD` (i.e. the tip of the current
|
||||
branch).
|
||||
|
||||
The command's second form creates a new branch head named <branchname>
|
||||
which points to the current `HEAD`, or <start-point> if given. As a
|
||||
special case, for <start-point>, 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`.
|
||||
which points to the current `HEAD`, or <start-point> if given.
|
||||
|
||||
Note that this will create the new branch, but it will not switch the
|
||||
working tree to it; use "git switch <newbranch>" to switch to the
|
||||
working tree to it; use "git checkout <newbranch>" to switch to the
|
||||
new branch.
|
||||
|
||||
When a local branch is started off a remote-tracking branch, Git sets up the
|
||||
@ -161,12 +149,10 @@ This option is only applicable in non-verbose mode.
|
||||
-r::
|
||||
--remotes::
|
||||
List or delete (if used with -d) the remote-tracking branches.
|
||||
Combine with `--list` to match the optional pattern(s).
|
||||
|
||||
-a::
|
||||
--all::
|
||||
List both remote-tracking branches and local branches.
|
||||
Combine with `--list` to match optional pattern(s).
|
||||
|
||||
-l::
|
||||
--list::
|
||||
@ -174,20 +160,14 @@ This option is only applicable in non-verbose mode.
|
||||
branch --list 'maint-*'`, list only the branches that match
|
||||
the pattern(s).
|
||||
|
||||
--show-current::
|
||||
Print the name of the current branch. In detached HEAD state,
|
||||
nothing is printed.
|
||||
|
||||
-v::
|
||||
-vv::
|
||||
--verbose::
|
||||
When in list mode,
|
||||
show sha1 and commit subject line for each head, along with
|
||||
relationship to upstream branch (if any). If given twice, print
|
||||
the path of the linked worktree (if any) and the name of the upstream
|
||||
branch, as well (see also `git remote show <remote>`). Note that the
|
||||
current worktree's HEAD will not have its path printed (it will always
|
||||
be your current directory).
|
||||
the name of the upstream branch, as well (see also `git remote
|
||||
show <remote>`).
|
||||
|
||||
-q::
|
||||
--quiet::
|
||||
@ -214,7 +194,7 @@ This option is only applicable in non-verbose mode.
|
||||
+
|
||||
This behavior is the default when the start point is a remote-tracking branch.
|
||||
Set the branch.autoSetupMerge configuration variable to `false` if you
|
||||
want `git switch`, `git checkout` and `git branch` to always behave as if `--no-track`
|
||||
want `git checkout` and `git branch` to always behave as if `--no-track`
|
||||
were given. Set it to `always` if you want this behavior when the
|
||||
start-point is either a local or remote-tracking branch.
|
||||
|
||||
@ -313,7 +293,7 @@ Start development from a known tag::
|
||||
$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
|
||||
$ cd my2.6
|
||||
$ git branch my2.6.14 v2.6.14 <1>
|
||||
$ git switch my2.6.14
|
||||
$ git checkout my2.6.14
|
||||
------------
|
||||
+
|
||||
<1> This step and the next one could be combined into a single step with
|
||||
@ -334,25 +314,13 @@ $ git branch -D test <2>
|
||||
<2> Delete the "test" branch even if the "master" branch (or whichever branch
|
||||
is currently checked out) does not have all commits from the test branch.
|
||||
|
||||
Listing branches from a specific remote::
|
||||
+
|
||||
------------
|
||||
$ git branch -r -l '<remote>/<pattern>' <1>
|
||||
$ git for-each-ref 'refs/remotes/<remote>/<pattern>' <2>
|
||||
------------
|
||||
+
|
||||
<1> Using `-a` would conflate <remote> with any local branches you happen to
|
||||
have been prefixed with the same <remote> pattern.
|
||||
<2> `for-each-ref` can take a wide range of options. See linkgit:git-for-each-ref[1]
|
||||
|
||||
Patterns will normally need quoting.
|
||||
|
||||
NOTES
|
||||
-----
|
||||
|
||||
If you are creating a branch that you want to switch to immediately,
|
||||
it is easier to use the "git switch" command with its `-c` option to
|
||||
do the same thing with a single command.
|
||||
If you are creating a branch that you want to checkout immediately, it is
|
||||
easier to use the git checkout command with its `-b` option to create
|
||||
a branch and check it out with a single command.
|
||||
|
||||
The options `--contains`, `--no-contains`, `--merged` and `--no-merged`
|
||||
serve four related but different purposes:
|
||||
|
@ -88,8 +88,7 @@ but it is explicitly forbidden at the beginning of a branch name).
|
||||
When run with `--branch` option in a repository, the input is first
|
||||
expanded for the ``previous checkout syntax''
|
||||
`@{-n}`. For example, `@{-1}` is a way to refer the last thing that
|
||||
was checked out using "git switch" or "git checkout" operation.
|
||||
This option should be
|
||||
was checked out using "git checkout" operation. This option should be
|
||||
used by porcelains to accept this syntax anywhere a branch name is
|
||||
expected, so they can act as if you typed the branch name. As an
|
||||
exception note that, the ``previous checkout operation'' might result
|
||||
|
@ -23,22 +23,31 @@ or the specified tree. If no paths are given, 'git checkout' will
|
||||
also update `HEAD` to set the specified branch as the current
|
||||
branch.
|
||||
|
||||
'git checkout' [<branch>]::
|
||||
To prepare for working on `<branch>`, switch to it by updating
|
||||
'git checkout' <branch>::
|
||||
To prepare for working on <branch>, switch to it by updating
|
||||
the index and the files in the working tree, and by pointing
|
||||
`HEAD` at the branch. Local modifications to the files in the
|
||||
HEAD at the branch. Local modifications to the files in the
|
||||
working tree are kept, so that they can be committed to the
|
||||
`<branch>`.
|
||||
<branch>.
|
||||
+
|
||||
If `<branch>` is not found but there does exist a tracking branch in
|
||||
exactly one remote (call it `<remote>`) with a matching name and
|
||||
`--no-guess` is not specified, treat as equivalent to
|
||||
If <branch> is not found but there does exist a tracking branch in
|
||||
exactly one remote (call it <remote>) with a matching name, treat as
|
||||
equivalent to
|
||||
+
|
||||
------------
|
||||
$ git checkout -b <branch> --track <remote>/<branch>
|
||||
------------
|
||||
+
|
||||
You could omit `<branch>`, in which case the command degenerates to
|
||||
If the branch exists in multiple remotes and one of them is named by
|
||||
the `checkout.defaultRemote` configuration variable, we'll use that
|
||||
one for the purposes of disambiguation, even if the `<branch>` isn't
|
||||
unique across all remotes. Set it to
|
||||
e.g. `checkout.defaultRemote=origin` to always checkout remote
|
||||
branches from there if `<branch>` is ambiguous but exists on the
|
||||
'origin' remote. See also `checkout.defaultRemote` in
|
||||
linkgit:git-config[1].
|
||||
+
|
||||
You could omit <branch>, in which case the command degenerates to
|
||||
"check out the current branch", which is a glorified no-op with
|
||||
rather expensive side-effects to show only the tracking information,
|
||||
if exists, for the current branch.
|
||||
@ -52,7 +61,7 @@ if exists, for the current branch.
|
||||
`--track` without `-b` implies branch creation; see the
|
||||
description of `--track` below.
|
||||
+
|
||||
If `-B` is given, `<new_branch>` is created if it doesn't exist; otherwise, it
|
||||
If `-B` is given, <new_branch> is created if it doesn't exist; otherwise, it
|
||||
is reset. This is the transactional equivalent of
|
||||
+
|
||||
------------
|
||||
@ -66,25 +75,25 @@ successful.
|
||||
'git checkout' --detach [<branch>]::
|
||||
'git checkout' [--detach] <commit>::
|
||||
|
||||
Prepare to work on top of `<commit>`, by detaching `HEAD` at it
|
||||
Prepare to work on top of <commit>, by detaching HEAD at it
|
||||
(see "DETACHED HEAD" section), and updating the index and the
|
||||
files in the working tree. Local modifications to the files
|
||||
in the working tree are kept, so that the resulting working
|
||||
tree will be the state recorded in the commit plus the local
|
||||
modifications.
|
||||
+
|
||||
When the `<commit>` argument is a branch name, the `--detach` option can
|
||||
be used to detach `HEAD` at the tip of the branch (`git checkout
|
||||
<branch>` would check out that branch without detaching `HEAD`).
|
||||
When the <commit> argument is a branch name, the `--detach` option can
|
||||
be used to detach HEAD at the tip of the branch (`git checkout
|
||||
<branch>` would check out that branch without detaching HEAD).
|
||||
+
|
||||
Omitting `<branch>` detaches `HEAD` at the tip of the current branch.
|
||||
Omitting <branch> detaches HEAD at the tip of the current branch.
|
||||
|
||||
'git checkout' [<tree-ish>] [--] <pathspec>...::
|
||||
|
||||
Overwrite paths in the working tree by replacing with the
|
||||
contents in the index or in the `<tree-ish>` (most often a
|
||||
commit). When a `<tree-ish>` is given, the paths that
|
||||
match the `<pathspec>` are updated both in the index and in
|
||||
contents in the index or in the <tree-ish> (most often a
|
||||
commit). When a <tree-ish> is given, the paths that
|
||||
match the <pathspec> are updated both in the index and in
|
||||
the working tree.
|
||||
+
|
||||
The index may contain unmerged entries because of a previous failed merge.
|
||||
@ -109,8 +118,7 @@ OPTIONS
|
||||
--quiet::
|
||||
Quiet, suppress feedback messages.
|
||||
|
||||
--progress::
|
||||
--no-progress::
|
||||
--[no-]progress::
|
||||
Progress status is reported on the standard error stream
|
||||
by default when it is attached to a terminal, unless `--quiet`
|
||||
is specified. This flag enables progress reporting even if not
|
||||
@ -119,7 +127,7 @@ OPTIONS
|
||||
-f::
|
||||
--force::
|
||||
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.
|
||||
+
|
||||
When checking out paths from the index, do not fail upon unmerged
|
||||
@ -146,12 +154,12 @@ on your side branch as `theirs` (i.e. "one contributor's work on top
|
||||
of it").
|
||||
|
||||
-b <new_branch>::
|
||||
Create a new branch named `<new_branch>` and start it at
|
||||
`<start_point>`; see linkgit:git-branch[1] for details.
|
||||
Create a new branch named <new_branch> and start it at
|
||||
<start_point>; see linkgit:git-branch[1] for details.
|
||||
|
||||
-B <new_branch>::
|
||||
Creates the branch `<new_branch>` and start it at `<start_point>`;
|
||||
if it already exists, then reset it to `<start_point>`. This is
|
||||
Creates the branch <new_branch> and start it at <start_point>;
|
||||
if it already exists, then reset it to <start_point>. This is
|
||||
equivalent to running "git branch" with "-f"; see
|
||||
linkgit:git-branch[1] for details.
|
||||
|
||||
@ -164,36 +172,15 @@ If no `-b` option is given, the name of the new branch will be
|
||||
derived from the remote-tracking branch, by looking at the local part of
|
||||
the refspec configured for the corresponding remote, and then stripping
|
||||
the initial part up to the "*".
|
||||
This would tell us to use `hack` as the local branch when branching
|
||||
off of `origin/hack` (or `remotes/origin/hack`, or even
|
||||
`refs/remotes/origin/hack`). If the given name has no slash, or the above
|
||||
This would tell us to use "hack" as the local branch when branching
|
||||
off of "origin/hack" (or "remotes/origin/hack", or even
|
||||
"refs/remotes/origin/hack"). If the given name has no slash, or the above
|
||||
guessing results in an empty name, the guessing is aborted. You can
|
||||
explicitly give a name with `-b` in such a case.
|
||||
|
||||
--no-track::
|
||||
Do not set up "upstream" configuration, even if the
|
||||
`branch.autoSetupMerge` configuration variable is true.
|
||||
|
||||
--guess::
|
||||
--no-guess::
|
||||
If `<branch>` is not found but there does exist a tracking
|
||||
branch in exactly one remote (call it `<remote>`) with a
|
||||
matching name, treat as equivalent to
|
||||
+
|
||||
------------
|
||||
$ git checkout -b <branch> --track <remote>/<branch>
|
||||
------------
|
||||
+
|
||||
If the branch exists in multiple remotes and one of them is named by
|
||||
the `checkout.defaultRemote` configuration variable, we'll use that
|
||||
one for the purposes of disambiguation, even if the `<branch>` isn't
|
||||
unique across all remotes. Set it to
|
||||
e.g. `checkout.defaultRemote=origin` to always checkout remote
|
||||
branches from there if `<branch>` is ambiguous but exists on the
|
||||
'origin' remote. See also `checkout.defaultRemote` in
|
||||
linkgit:git-config[1].
|
||||
+
|
||||
Use `--no-guess` to disable this.
|
||||
branch.autoSetupMerge configuration variable is true.
|
||||
|
||||
-l::
|
||||
Create the new branch's reflog; see linkgit:git-branch[1] for
|
||||
@ -202,21 +189,21 @@ Use `--no-guess` to disable this.
|
||||
--detach::
|
||||
Rather than checking out a branch to work on it, check out a
|
||||
commit for inspection and discardable experiments.
|
||||
This is the default behavior of `git checkout <commit>` when
|
||||
`<commit>` is not a branch name. See the "DETACHED HEAD" section
|
||||
This is the default behavior of "git checkout <commit>" when
|
||||
<commit> is not a branch name. See the "DETACHED HEAD" section
|
||||
below for details.
|
||||
|
||||
--orphan <new_branch>::
|
||||
Create a new 'orphan' branch, named `<new_branch>`, started from
|
||||
`<start_point>` and switch to it. The first commit made on this
|
||||
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.
|
||||
"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
|
||||
@ -225,17 +212,17 @@ 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
|
||||
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.
|
||||
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.
|
||||
|
||||
--ignore-skip-worktree-bits::
|
||||
In sparse checkout mode, `git checkout -- <paths>` would
|
||||
update only entries matched by `<paths>` and sparse patterns
|
||||
in `$GIT_DIR/info/sparse-checkout`. This option ignores
|
||||
the sparse patterns and adds back any files in `<paths>`.
|
||||
update only entries matched by <paths> and sparse patterns
|
||||
in $GIT_DIR/info/sparse-checkout. This option ignores
|
||||
the sparse patterns and adds back any files in <paths>.
|
||||
|
||||
-m::
|
||||
--merge::
|
||||
@ -255,29 +242,24 @@ should result in deletion of the path).
|
||||
+
|
||||
When checking out paths from the index, this option lets you recreate
|
||||
the conflicted merge in the specified paths.
|
||||
+
|
||||
When switching branches with `--merge`, staged changes may be lost.
|
||||
|
||||
--conflict=<style>::
|
||||
The same as `--merge` option above, but changes the way the
|
||||
The same as --merge option above, but changes the way the
|
||||
conflicting hunks are presented, overriding the
|
||||
`merge.conflictStyle` configuration variable. Possible values are
|
||||
merge.conflictStyle configuration variable. Possible values are
|
||||
"merge" (default) and "diff3" (in addition to what is shown by
|
||||
"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-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).
|
||||
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. See the ``Interactive Mode''
|
||||
section of linkgit:git-add[1] to learn how to operate the `--patch` mode.
|
||||
+
|
||||
Note that this option uses the no overlay mode by default (see also
|
||||
`--overlay`), and currently doesn't support overlay mode.
|
||||
|
||||
--ignore-other-worktrees::
|
||||
`git checkout` refuses when the wanted ref is already checked
|
||||
@ -285,42 +267,31 @@ Note that this option uses the no overlay mode by default (see also
|
||||
out anyway. In other words, the ref can be held by more than one
|
||||
worktree.
|
||||
|
||||
--overwrite-ignore::
|
||||
--no-overwrite-ignore::
|
||||
Silently overwrite ignored files when switching branches. This
|
||||
is the default behavior. Use `--no-overwrite-ignore` to abort
|
||||
the operation when the new branch contains ignored files.
|
||||
|
||||
--recurse-submodules::
|
||||
--no-recurse-submodules::
|
||||
Using `--recurse-submodules` will update the content of all initialized
|
||||
--[no-]recurse-submodules::
|
||||
Using --recurse-submodules will update the content of all initialized
|
||||
submodules according to the commit recorded in the superproject. If
|
||||
local modifications in a submodule would be overwritten the checkout
|
||||
will fail unless `-f` is used. If nothing (or `--no-recurse-submodules`)
|
||||
will fail unless `-f` is used. If nothing (or --no-recurse-submodules)
|
||||
is used, the work trees of submodules will not be updated.
|
||||
Just like linkgit:git-submodule[1], this will detach `HEAD` of the
|
||||
submodule.
|
||||
Just like linkgit:git-submodule[1], this will detach the
|
||||
submodules HEAD.
|
||||
|
||||
--overlay::
|
||||
--no-overlay::
|
||||
In the default overlay mode, `git checkout` never
|
||||
removes files from the index or the working tree. When
|
||||
specifying `--no-overlay`, files that appear in the index and
|
||||
working tree, but not in `<tree-ish>` are removed, to make them
|
||||
match `<tree-ish>` exactly.
|
||||
--no-guess::
|
||||
Do not attempt to create a branch if a remote tracking branch
|
||||
of the same name exists.
|
||||
|
||||
<branch>::
|
||||
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
|
||||
branch is checked out. Otherwise, if it refers to a valid
|
||||
commit, your `HEAD` becomes "detached" and you are no longer on
|
||||
commit, your HEAD becomes "detached" and you are no longer on
|
||||
any branch (see below for details).
|
||||
+
|
||||
You can use the `@{-N}` syntax to refer to the N-th last
|
||||
You can use the `"@{-N}"` syntax to refer to the N-th last
|
||||
branch/commit checked out using "git checkout" operation. You may
|
||||
also specify `-` which is synonymous to `@{-1}`.
|
||||
also specify `-` which is synonymous to `"@{-1}"`.
|
||||
+
|
||||
As a special case, you may use `A...B` as a shortcut for the
|
||||
As a 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`.
|
||||
|
||||
@ -329,11 +300,7 @@ leave out at most one of `A` and `B`, in which case it defaults to `HEAD`.
|
||||
|
||||
<start_point>::
|
||||
The name of a commit at which to start the new branch; see
|
||||
linkgit:git-branch[1] for details. Defaults to `HEAD`.
|
||||
+
|
||||
As a 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`.
|
||||
linkgit:git-branch[1] for details. Defaults to HEAD.
|
||||
|
||||
<tree-ish>::
|
||||
Tree to checkout from (when paths are given). If not specified,
|
||||
@ -343,9 +310,9 @@ leave out at most one of `A` and `B`, in which case it defaults to `HEAD`.
|
||||
|
||||
DETACHED HEAD
|
||||
-------------
|
||||
`HEAD` normally refers to a named branch (e.g. `master`). Meanwhile, each
|
||||
HEAD normally refers to a named branch (e.g. 'master'). Meanwhile, each
|
||||
branch refers to a specific commit. Let's look at a repo with three
|
||||
commits, one of them tagged, and with branch `master` checked out:
|
||||
commits, one of them tagged, and with branch 'master' checked out:
|
||||
|
||||
------------
|
||||
HEAD (refers to branch 'master')
|
||||
@ -358,10 +325,10 @@ a---b---c branch 'master' (refers to commit 'c')
|
||||
------------
|
||||
|
||||
When a commit is created in this state, the branch is updated to refer to
|
||||
the new commit. Specifically, 'git commit' creates a new commit `d`, whose
|
||||
parent is commit `c`, and then updates branch `master` to refer to new
|
||||
commit `d`. `HEAD` still refers to branch `master` and so indirectly now refers
|
||||
to commit `d`:
|
||||
the new commit. Specifically, 'git commit' creates a new commit 'd', whose
|
||||
parent is commit 'c', and then updates branch 'master' to refer to new
|
||||
commit 'd'. HEAD still refers to branch 'master' and so indirectly now refers
|
||||
to commit 'd':
|
||||
|
||||
------------
|
||||
$ edit; git add; git commit
|
||||
@ -378,7 +345,7 @@ a---b---c---d branch 'master' (refers to commit 'd')
|
||||
It is sometimes useful to be able to checkout a commit that is not at
|
||||
the tip of any named branch, or even to create a new commit that is not
|
||||
referenced by a named branch. Let's look at what happens when we
|
||||
checkout commit `b` (here we show two ways this may be done):
|
||||
checkout commit 'b' (here we show two ways this may be done):
|
||||
|
||||
------------
|
||||
$ git checkout v2.0 # or
|
||||
@ -393,9 +360,9 @@ a---b---c---d branch 'master' (refers to commit 'd')
|
||||
tag 'v2.0' (refers to commit 'b')
|
||||
------------
|
||||
|
||||
Notice that regardless of which checkout command we use, `HEAD` now refers
|
||||
directly to commit `b`. This is known as being in detached `HEAD` state.
|
||||
It means simply that `HEAD` refers to a specific commit, as opposed to
|
||||
Notice that regardless of which checkout command we use, HEAD now refers
|
||||
directly to commit 'b'. This is known as being in detached HEAD state.
|
||||
It means simply that HEAD refers to a specific commit, as opposed to
|
||||
referring to a named branch. Let's see what happens when we create a commit:
|
||||
|
||||
------------
|
||||
@ -412,7 +379,7 @@ a---b---c---d branch 'master' (refers to commit 'd')
|
||||
tag 'v2.0' (refers to commit 'b')
|
||||
------------
|
||||
|
||||
There is now a new commit `e`, but it is referenced only by `HEAD`. We can
|
||||
There is now a new commit 'e', but it is referenced only by HEAD. We can
|
||||
of course add yet another commit in this state:
|
||||
|
||||
------------
|
||||
@ -430,7 +397,7 @@ a---b---c---d branch 'master' (refers to commit 'd')
|
||||
------------
|
||||
|
||||
In fact, we can perform all the normal Git operations. But, let's look
|
||||
at what happens when we then checkout `master`:
|
||||
at what happens when we then checkout master:
|
||||
|
||||
------------
|
||||
$ git checkout master
|
||||
@ -445,9 +412,9 @@ a---b---c---d branch 'master' (refers to commit 'd')
|
||||
------------
|
||||
|
||||
It is important to realize that at this point nothing refers to commit
|
||||
`f`. Eventually commit `f` (and by extension commit `e`) will be deleted
|
||||
'f'. Eventually commit 'f' (and by extension commit 'e') will be deleted
|
||||
by the routine Git garbage collection process, unless we create a reference
|
||||
before that happens. If we have not yet moved away from commit `f`,
|
||||
before that happens. If we have not yet moved away from commit 'f',
|
||||
any of these will create a reference to it:
|
||||
|
||||
------------
|
||||
@ -456,19 +423,19 @@ $ git branch foo <2>
|
||||
$ git tag foo <3>
|
||||
------------
|
||||
|
||||
<1> creates a new branch `foo`, which refers to commit `f`, and then
|
||||
updates `HEAD` to refer to branch `foo`. In other words, we'll no longer
|
||||
be in detached `HEAD` state after this command.
|
||||
<1> creates a new branch 'foo', which refers to commit 'f', and then
|
||||
updates HEAD to refer to branch 'foo'. In other words, we'll no longer
|
||||
be in detached HEAD state after this command.
|
||||
|
||||
<2> similarly creates a new branch `foo`, which refers to commit `f`,
|
||||
but leaves `HEAD` detached.
|
||||
<2> similarly creates a new branch 'foo', which refers to commit 'f',
|
||||
but leaves HEAD detached.
|
||||
|
||||
<3> creates a new tag `foo`, which refers to commit `f`,
|
||||
leaving `HEAD` detached.
|
||||
<3> creates a new tag 'foo', which refers to commit 'f',
|
||||
leaving HEAD detached.
|
||||
|
||||
If we have moved away from commit `f`, then we must first recover its object
|
||||
If we have moved away from commit 'f', then we must first recover its object
|
||||
name (typically by using git reflog), and then we can create a reference to
|
||||
it. For example, to see the last two commits to which `HEAD` referred, we
|
||||
it. For example, to see the last two commits to which HEAD referred, we
|
||||
can use either of these commands:
|
||||
|
||||
------------
|
||||
@ -479,12 +446,12 @@ $ git log -g -2 HEAD
|
||||
ARGUMENT DISAMBIGUATION
|
||||
-----------------------
|
||||
|
||||
When there is only one argument given and it is not `--` (e.g. `git
|
||||
checkout abc`), and when the argument is both a valid `<tree-ish>`
|
||||
(e.g. a branch `abc` exists) and a valid `<pathspec>` (e.g. a file
|
||||
When there is only one argument given and it is not `--` (e.g. "git
|
||||
checkout abc"), and when the argument is both a valid `<tree-ish>`
|
||||
(e.g. a branch "abc" exists) and a valid `<pathspec>` (e.g. a file
|
||||
or a directory whose name is "abc" exists), Git would usually ask
|
||||
you to disambiguate. Because checking out a branch is so common an
|
||||
operation, however, `git checkout abc` takes "abc" as a `<tree-ish>`
|
||||
operation, however, "git checkout abc" takes "abc" as a `<tree-ish>`
|
||||
in such a situation. Use `git checkout -- <pathspec>` if you want
|
||||
to checkout these paths out of the index.
|
||||
|
||||
@ -492,7 +459,7 @@ EXAMPLES
|
||||
--------
|
||||
|
||||
. The following sequence checks out the `master` branch, reverts
|
||||
the `Makefile` to two revisions back, deletes `hello.c` by
|
||||
the `Makefile` to two revisions back, deletes hello.c by
|
||||
mistake, and gets it back from the index.
|
||||
+
|
||||
------------
|
||||
@ -504,7 +471,7 @@ $ git checkout hello.c <3>
|
||||
+
|
||||
<1> switch branch
|
||||
<2> take a file out of another commit
|
||||
<3> restore `hello.c` from the index
|
||||
<3> restore hello.c from the index
|
||||
+
|
||||
If you want to check out _all_ C source files out of the index,
|
||||
you can say
|
||||
@ -533,7 +500,7 @@ $ git checkout -- hello.c
|
||||
$ git checkout mytopic
|
||||
------------
|
||||
+
|
||||
However, your "wrong" branch and correct `mytopic` branch may
|
||||
However, your "wrong" branch and correct "mytopic" branch may
|
||||
differ in files that you have modified locally, in which case
|
||||
the above checkout would fail like this:
|
||||
+
|
||||
@ -574,11 +541,6 @@ $ edit frotz
|
||||
$ git add frotz
|
||||
------------
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:git-switch[1],
|
||||
linkgit:git-restore[1]
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the linkgit:git[1] suite
|
||||
|
@ -10,7 +10,9 @@ SYNOPSIS
|
||||
[verse]
|
||||
'git cherry-pick' [--edit] [-n] [-m parent-number] [-s] [-x] [--ff]
|
||||
[-S[<keyid>]] <commit>...
|
||||
'git cherry-pick' (--continue | --skip | --abort | --quit)
|
||||
'git cherry-pick' --continue
|
||||
'git cherry-pick' --quit
|
||||
'git cherry-pick' --abort
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -55,13 +57,6 @@ OPTIONS
|
||||
With this option, 'git cherry-pick' will let you edit the commit
|
||||
message prior to committing.
|
||||
|
||||
--cleanup=<mode>::
|
||||
This option determines how the commit message will be cleaned up before
|
||||
being passed on to the commit machinery. See linkgit:git-commit[1] for more
|
||||
details. In particular, if the '<mode>' is given a value of `scissors`,
|
||||
scissors will be appended to `MERGE_MSG` before being passed on in the case
|
||||
of a conflict.
|
||||
|
||||
-x::
|
||||
When recording the commit, append a line that says
|
||||
"(cherry picked from commit ...)" to the original commit
|
||||
@ -153,11 +148,6 @@ effect to your index in a row.
|
||||
Pass the merge strategy-specific option through to the
|
||||
merge strategy. See linkgit:git-merge[1] for details.
|
||||
|
||||
--rerere-autoupdate::
|
||||
--no-rerere-autoupdate::
|
||||
Allow the rerere mechanism to update the index with the
|
||||
result of auto-conflict resolution if possible.
|
||||
|
||||
SEQUENCER SUBCOMMANDS
|
||||
---------------------
|
||||
include::sequencer.txt[]
|
||||
|
@ -55,15 +55,16 @@ OPTIONS
|
||||
|
||||
-e <pattern>::
|
||||
--exclude=<pattern>::
|
||||
Use the given exclude pattern in addition to the standard ignore rules
|
||||
(see linkgit:gitignore[5]).
|
||||
In addition to those found in .gitignore (per directory) and
|
||||
$GIT_DIR/info/exclude, also consider these patterns to be in the
|
||||
set of the ignore rules in effect.
|
||||
|
||||
-x::
|
||||
Don't use the standard ignore rules (see linkgit:gitignore[5]), but
|
||||
still use the ignore rules given with `-e` options from the command
|
||||
line. This allows removing all untracked
|
||||
Don't use the standard ignore rules read from .gitignore (per
|
||||
directory) and $GIT_DIR/info/exclude, but do still use the ignore
|
||||
rules given with `-e` options. This allows removing all untracked
|
||||
files, including build products. This can be used (possibly in
|
||||
conjunction with 'git restore' or 'git reset') to create a pristine
|
||||
conjunction with 'git reset') to create a pristine
|
||||
working directory to test a clean build.
|
||||
|
||||
-X::
|
||||
|
@ -15,15 +15,14 @@ SYNOPSIS
|
||||
[--dissociate] [--separate-git-dir <git dir>]
|
||||
[--depth <depth>] [--[no-]single-branch] [--no-tags]
|
||||
[--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
|
||||
[--[no-]remote-submodules] [--jobs <n>] [--] <repository>
|
||||
[<directory>]
|
||||
[--jobs <n>] [--] <repository> [<directory>]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
||||
Clones a repository into a newly created directory, creates
|
||||
remote-tracking branches for each branch in the cloned repository
|
||||
(visible using `git branch --remotes`), and creates and checks out an
|
||||
(visible using `git branch -r`), and creates and checks out an
|
||||
initial branch that is forked from the cloned repository's
|
||||
currently active branch.
|
||||
|
||||
@ -41,8 +40,8 @@ configuration variables.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
-l::
|
||||
--local::
|
||||
-l::
|
||||
When the repository to clone from is on a local machine,
|
||||
this flag bypasses the normal "Git aware" transport
|
||||
mechanism and clones the repository by making a copy of
|
||||
@ -63,8 +62,8 @@ Git transport instead.
|
||||
directory instead of using hardlinks. This may be desirable
|
||||
if you are trying to make a back-up of your repository.
|
||||
|
||||
-s::
|
||||
--shared::
|
||||
-s::
|
||||
When the repository to clone is on the local machine,
|
||||
instead of using hard links, automatically setup
|
||||
`.git/objects/info/alternates` to share the objects
|
||||
@ -81,13 +80,13 @@ which automatically call `git gc --auto`. (See linkgit:git-gc[1].)
|
||||
If these objects are removed and were referenced by the cloned repository,
|
||||
then the cloned repository will become corrupt.
|
||||
+
|
||||
Note that running `git repack` without the `--local` option in a repository
|
||||
cloned with `--shared` will copy objects from the source repository into a pack
|
||||
in the cloned repository, removing the disk space savings of `clone --shared`.
|
||||
It is safe, however, to run `git gc`, which uses the `--local` option by
|
||||
Note that running `git repack` without the `-l` option in a repository
|
||||
cloned with `-s` will copy objects from the source repository into a pack
|
||||
in the cloned repository, removing the disk space savings of `clone -s`.
|
||||
It is safe, however, to run `git gc`, which uses the `-l` option by
|
||||
default.
|
||||
+
|
||||
If you want to break the dependency of a repository cloned with `--shared` on
|
||||
If you want to break the dependency of a repository cloned with `-s` on
|
||||
its source repository, you can simply run `git repack -a` to copy all
|
||||
objects from the source repository into a pack in the cloned repository.
|
||||
|
||||
@ -116,39 +115,31 @@ objects from the source repository into a pack in the cloned repository.
|
||||
same repository, and this option can be used to stop the
|
||||
borrowing.
|
||||
|
||||
-q::
|
||||
--quiet::
|
||||
-q::
|
||||
Operate quietly. Progress is not reported to the standard
|
||||
error stream.
|
||||
|
||||
-v::
|
||||
--verbose::
|
||||
-v::
|
||||
Run verbosely. Does not affect the reporting of progress status
|
||||
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 `--quiet`
|
||||
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.
|
||||
|
||||
--server-option=<option>::
|
||||
Transmit the given string to the server when communicating using
|
||||
protocol version 2. The given string must not contain a NUL or LF
|
||||
character. The server's handling of server options, including
|
||||
unknown ones, is server-specific.
|
||||
When multiple `--server-option=<option>` are given, they are all
|
||||
sent to the other side in the order listed on the command line.
|
||||
|
||||
-n::
|
||||
--no-checkout::
|
||||
-n::
|
||||
No checkout of HEAD is performed after the clone is complete.
|
||||
|
||||
--bare::
|
||||
Make a 'bare' Git repository. That is, instead of
|
||||
creating `<directory>` and placing the administrative
|
||||
files in `<directory>/.git`, make the `<directory>`
|
||||
itself the `$GIT_DIR`. This obviously implies the `--no-checkout`
|
||||
itself the `$GIT_DIR`. This obviously implies the `-n`
|
||||
because there is nowhere to check out the working tree.
|
||||
Also the branch heads at the remote are copied directly
|
||||
to corresponding local branch heads, without mapping
|
||||
@ -164,13 +155,13 @@ objects from the source repository into a pack in the cloned repository.
|
||||
that all these refs are overwritten by a `git remote update` in the
|
||||
target repository.
|
||||
|
||||
-o <name>::
|
||||
--origin <name>::
|
||||
-o <name>::
|
||||
Instead of using the remote name `origin` to keep track
|
||||
of the upstream repository, use `<name>`.
|
||||
|
||||
-b <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
|
||||
@ -178,8 +169,8 @@ objects from the source repository into a pack in the cloned repository.
|
||||
`--branch` can also take tags and detaches the HEAD at that commit
|
||||
in the resulting repository.
|
||||
|
||||
-u <upload-pack>::
|
||||
--upload-pack <upload-pack>::
|
||||
-u <upload-pack>::
|
||||
When given, and the repository to clone from is accessed
|
||||
via ssh, this specifies a non-default path for the command
|
||||
run on the other end.
|
||||
@ -188,8 +179,8 @@ objects from the source repository into a pack in the cloned repository.
|
||||
Specify the directory from which templates will be used;
|
||||
(See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)
|
||||
|
||||
-c <key>=<value>::
|
||||
--config <key>=<value>::
|
||||
-c <key>=<value>::
|
||||
Set a configuration variable in the newly-created repository;
|
||||
this takes effect immediately after the repository is
|
||||
initialized, but before the remote history is fetched or any
|
||||
@ -261,12 +252,6 @@ or `--mirror` is given)
|
||||
--[no-]shallow-submodules::
|
||||
All submodules which are cloned will be shallow with a depth of 1.
|
||||
|
||||
--[no-]remote-submodules::
|
||||
All submodules which are cloned will use the status of the submodule’s
|
||||
remote-tracking branch to update the submodule, rather than the
|
||||
superproject’s recorded SHA-1. Equivalent to passing `--remote` to
|
||||
`git submodule update`.
|
||||
|
||||
--separate-git-dir=<git dir>::
|
||||
Instead of placing the cloned repository where it is supposed
|
||||
to be, place the cloned repository at the specified directory,
|
||||
|
@ -10,7 +10,7 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git commit-graph read' [--object-dir <dir>]
|
||||
'git commit-graph verify' [--object-dir <dir>] [--shallow]
|
||||
'git commit-graph verify' [--object-dir <dir>]
|
||||
'git commit-graph write' <options> [--object-dir <dir>]
|
||||
|
||||
|
||||
@ -26,7 +26,7 @@ OPTIONS
|
||||
Use given directory for the location of packfiles and commit-graph
|
||||
file. This parameter exists to specify the location of an alternate
|
||||
that only has the objects directory, not a full `.git` directory. The
|
||||
commit-graph file is expected to be in the `<dir>/info` directory and
|
||||
commit-graph file is expected to be at `<dir>/info/commit-graph` and
|
||||
the packfiles are expected to be in `<dir>/pack`.
|
||||
|
||||
|
||||
@ -51,25 +51,6 @@ or `--stdin-packs`.)
|
||||
+
|
||||
With the `--append` option, include all commits that are present in the
|
||||
existing commit-graph file.
|
||||
+
|
||||
With the `--split` option, write the commit-graph as a chain of multiple
|
||||
commit-graph files stored in `<dir>/info/commit-graphs`. The new commits
|
||||
not already in the commit-graph are added in a new "tip" file. This file
|
||||
is merged with the existing file if the following merge conditions are
|
||||
met:
|
||||
+
|
||||
* If `--size-multiple=<X>` is not specified, let `X` equal 2. If the new
|
||||
tip file would have `N` commits and the previous tip has `M` commits and
|
||||
`X` times `N` is greater than `M`, instead merge the two files into a
|
||||
single file.
|
||||
+
|
||||
* If `--max-commits=<M>` is specified with `M` a positive integer, and the
|
||||
new tip file would have more than `M` commits, then instead merge the new
|
||||
tip with the previous tip.
|
||||
+
|
||||
Finally, if `--expire-time=<datetime>` is not specified, let `datetime`
|
||||
be the current time. After writing the split commit-graph, delete all
|
||||
unused commit-graph whose modified times are older than `datetime`.
|
||||
|
||||
'read'::
|
||||
|
||||
@ -80,9 +61,6 @@ Used for debugging purposes.
|
||||
|
||||
Read the commit-graph file and verify its contents against the object
|
||||
database. Used to check for corrupted data.
|
||||
+
|
||||
With the `--shallow` option, only check the tip commit-graph file in
|
||||
a chain of split commit-graphs.
|
||||
|
||||
|
||||
EXAMPLES
|
||||
|
@ -23,10 +23,6 @@ Creates a new commit object based on the provided tree object and
|
||||
emits the new commit object id on stdout. The log message is read
|
||||
from the standard input, unless `-m` or `-F` options are given.
|
||||
|
||||
The `-m` and `-F` options can be given any number of times, in any
|
||||
order. The commit log message will be composed in the order in which
|
||||
the options are given.
|
||||
|
||||
A commit object may have any number of parents. With exactly one
|
||||
parent, it is an ordinary commit. Having more than one parent makes
|
||||
the commit a merge between several lines of history. Initial (root)
|
||||
@ -45,7 +41,7 @@ state was.
|
||||
OPTIONS
|
||||
-------
|
||||
<tree>::
|
||||
An existing tree object.
|
||||
An existing tree object
|
||||
|
||||
-p <parent>::
|
||||
Each `-p` indicates the id of a parent commit object.
|
||||
@ -56,8 +52,7 @@ OPTIONS
|
||||
|
||||
-F <file>::
|
||||
Read the commit log message from the given file. Use `-` to read
|
||||
from the standard input. This can be given more than once and the
|
||||
content of each file becomes its own paragraph.
|
||||
from the standard input.
|
||||
|
||||
-S[<keyid>]::
|
||||
--gpg-sign[=<keyid>]::
|
||||
|
@ -359,7 +359,7 @@ When recording your own work, the contents of modified files in
|
||||
your working tree are temporarily stored to a staging area
|
||||
called the "index" with 'git add'. A file can be
|
||||
reverted back, only in the index but not in the working tree,
|
||||
to that of the last commit with `git restore --staged <file>`,
|
||||
to that of the last commit with `git reset HEAD -- <file>`,
|
||||
which effectively reverts 'git add' and prevents the changes to
|
||||
this file from participating in the next commit. After building
|
||||
the state to be committed incrementally with these commands,
|
||||
|
@ -126,7 +126,7 @@ See also <<FILES>>.
|
||||
|
||||
--local::
|
||||
For writing options: write to the repository `.git/config` file.
|
||||
This is the default behavior.
|
||||
This is the default behavior.
|
||||
+
|
||||
For reading options: read only from the repository `.git/config` rather than
|
||||
from all available files.
|
||||
@ -240,9 +240,7 @@ Valid `<type>`'s include:
|
||||
output. The optional `default` parameter is used instead, if
|
||||
there is no color configured for `name`.
|
||||
+
|
||||
`--type=color [--default=<default>]` is preferred over `--get-color`
|
||||
(but note that `--get-color` will omit the trailing newline printed by
|
||||
`--type=color`).
|
||||
`--type=color [--default=<default>]` is preferred over `--get-color`.
|
||||
|
||||
-e::
|
||||
--edit::
|
||||
|
@ -57,7 +57,7 @@ OPTIONS
|
||||
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
|
||||
'git://example.com/hello.git', 'git daemon' will interpret the path
|
||||
as `/srv/git/hello.git`.
|
||||
as '/srv/git/hello.git'.
|
||||
|
||||
--base-path-relaxed::
|
||||
If --base-path is enabled and repo lookup fails, with this option
|
||||
|
@ -139,7 +139,7 @@ at the end.
|
||||
|
||||
The number of additional commits is the number
|
||||
of commits which would be displayed by "git log v1.0.4..parent".
|
||||
The hash suffix is "-g" + unambiguous abbreviation for the tip commit
|
||||
The hash suffix is "-g" + 7-char abbreviation for the tip commit
|
||||
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
|
||||
|
@ -10,8 +10,8 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git diff-tree' [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty]
|
||||
[-t] [-r] [-c | --cc] [--combined-all-paths] [--root]
|
||||
[<common diff options>] <tree-ish> [<tree-ish>] [<path>...]
|
||||
[-t] [-r] [-c | --cc] [--root] [<common diff options>]
|
||||
<tree-ish> [<tree-ish>] [<path>...]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -105,20 +105,12 @@ include::pretty-options.txt[]
|
||||
itself and the commit log message is not shown, just like in any other
|
||||
"empty diff" case.
|
||||
|
||||
--combined-all-paths::
|
||||
This flag causes combined diffs (used for merge commits) to
|
||||
list the name of the file from all parents. It thus only has
|
||||
effect when -c or --cc are specified, and is likely only
|
||||
useful if filename changes are detected (i.e. when either
|
||||
rename or copy detection have been requested).
|
||||
|
||||
--always::
|
||||
Show the commit itself and the commit log message even
|
||||
if the diff itself is empty.
|
||||
|
||||
|
||||
include::pretty-formats.txt[]
|
||||
|
||||
include::diff-format.txt[]
|
||||
|
||||
GIT
|
||||
|
@ -90,9 +90,7 @@ instead. `--no-symlinks` is the default on Windows.
|
||||
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`. The `--no-gui`
|
||||
option can be used to override this setting. If `diff.guitool`
|
||||
is not set, we will fallback in the order of `merge.guitool`,
|
||||
`diff.tool`, `merge.tool` until a tool is found.
|
||||
option can be used to override this setting.
|
||||
|
||||
--[no-]trust-exit-code::
|
||||
'git-difftool' invokes a diff tool individually on each file.
|
||||
|
@ -129,13 +129,6 @@ marks the same across runs.
|
||||
for intermediary filters (e.g. for rewriting commit messages
|
||||
which refer to older commits, or for stripping blobs by id).
|
||||
|
||||
--reencode=(yes|no|abort)::
|
||||
Specify how to handle `encoding` header in commit objects. When
|
||||
asking to 'abort' (which is the default), this program will die
|
||||
when encountering such a commit object. With 'yes', the commit
|
||||
message will be reencoded into UTF-8. With 'no', the original
|
||||
encoding will be preserved.
|
||||
|
||||
--refspec::
|
||||
Apply the specified refspec to each ref exported. Multiple of them can
|
||||
be specified.
|
||||
|
@ -51,6 +51,21 @@ OPTIONS
|
||||
memory used by fast-import during this run. Showing this output
|
||||
is currently the default, but can be disabled with --quiet.
|
||||
|
||||
--allow-unsafe-features::
|
||||
Many command-line options can be provided as part of the
|
||||
fast-import stream itself by using the `feature` or `option`
|
||||
commands. However, some of these options are unsafe (e.g.,
|
||||
allowing fast-import to access the filesystem outside of the
|
||||
repository). These options are disabled by default, but can be
|
||||
allowed by providing this option on the command line. This
|
||||
currently impacts only the `export-marks`, `import-marks`, and
|
||||
`import-marks-if-exists` feature commands.
|
||||
+
|
||||
Only enable this option if you trust the program generating the
|
||||
fast-import stream! This option is enabled automatically for
|
||||
remote-helpers that use the `import` capability, as they are
|
||||
already trusted to run their own code.
|
||||
|
||||
Options for Frontends
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -388,7 +403,6 @@ change to the project.
|
||||
original-oid?
|
||||
('author' (SP <name>)? SP LT <email> GT SP <when> LF)?
|
||||
'committer' (SP <name>)? SP LT <email> GT SP <when> LF
|
||||
('encoding' SP <encoding>)?
|
||||
data
|
||||
('from' SP <commit-ish> LF)?
|
||||
('merge' SP <commit-ish> LF)?
|
||||
@ -423,12 +437,7 @@ However it is recommended that a `filedeleteall` command precede
|
||||
all `filemodify`, `filecopy`, `filerename` and `notemodify` commands in
|
||||
the same commit, as `filedeleteall` wipes the branch clean (see below).
|
||||
|
||||
The `LF` after the command is optional (it used to be required). Note
|
||||
that for reasons of backward compatibility, if the commit ends with a
|
||||
`data` command (i.e. it has has no `from`, `merge`, `filemodify`,
|
||||
`filedelete`, `filecopy`, `filerename`, `filedeleteall` or
|
||||
`notemodify` commands) then two `LF` commands may appear at the end of
|
||||
the command instead of just one.
|
||||
The `LF` after the command is optional (it used to be required).
|
||||
|
||||
`author`
|
||||
^^^^^^^^
|
||||
@ -456,12 +465,6 @@ that was selected by the --date-format=<fmt> command-line option.
|
||||
See ``Date Formats'' above for the set of supported formats, and
|
||||
their syntax.
|
||||
|
||||
`encoding`
|
||||
^^^^^^^^^^
|
||||
The optional `encoding` command indicates the encoding of the commit
|
||||
message. Most commits are UTF-8 and the encoding is omitted, but this
|
||||
allows importing commit messages into git without first reencoding them.
|
||||
|
||||
`from`
|
||||
^^^^^^
|
||||
The `from` command is used to specify the commit to initialize
|
||||
@ -978,6 +981,10 @@ might want to refer to in their commit messages.
|
||||
'get-mark' SP ':' <idnum> LF
|
||||
....
|
||||
|
||||
This command can be used anywhere in the stream that comments are
|
||||
accepted. In particular, the `get-mark` command can be used in the
|
||||
middle of a commit but not in the middle of a `data` command.
|
||||
|
||||
See ``Responses To Commands'' below for details about how to read
|
||||
this output safely.
|
||||
|
||||
@ -1004,10 +1011,9 @@ Output uses the same format as `git cat-file --batch`:
|
||||
<contents> LF
|
||||
====
|
||||
|
||||
This command can be used where a `filemodify` directive can appear,
|
||||
allowing it to be used in the middle of a commit. For a `filemodify`
|
||||
using an inline directive, it can also appear right before the `data`
|
||||
directive.
|
||||
This command can be used anywhere in the stream that comments are
|
||||
accepted. In particular, the `cat-blob` command can be used in the
|
||||
middle of a commit but not in the middle of a `data` command.
|
||||
|
||||
See ``Responses To Commands'' below for details about how to read
|
||||
this output safely.
|
||||
@ -1020,8 +1026,8 @@ printing a blob from the active commit (with `cat-blob`) or copying a
|
||||
blob or tree from a previous commit for use in the current one (with
|
||||
`filemodify`).
|
||||
|
||||
The `ls` command can also be used where a `filemodify` directive can
|
||||
appear, allowing it to be used in the middle of a commit.
|
||||
The `ls` command can be used anywhere in the stream that comments are
|
||||
accepted, including the middle of a commit.
|
||||
|
||||
Reading from the active commit::
|
||||
This form can only be used in the middle of a `commit`.
|
||||
@ -1405,13 +1411,6 @@ deltas are suboptimal (see above) then also adding the `-f` option
|
||||
to force recomputation of all deltas can significantly reduce the
|
||||
final packfile size (30-50% smaller can be quite typical).
|
||||
|
||||
Instead of running `git repack` you can also run `git gc
|
||||
--aggressive`, which will also optimize other things after an import
|
||||
(e.g. pack loose refs). As noted in the "AGGRESSIVE" section in
|
||||
linkgit:git-gc[1] the `--aggressive` option will find new deltas with
|
||||
the `-f` option to linkgit:git-repack[1]. For the reasons elaborated
|
||||
on above using `--aggressive` after a fast-import is one of the few
|
||||
cases where it's known to be worthwhile.
|
||||
|
||||
MEMORY UTILIZATION
|
||||
------------------
|
||||
|
@ -189,7 +189,7 @@ to other tags will be rewritten to point to the underlying commit.
|
||||
rewriting. When applying a tree filter, the command needs to
|
||||
temporarily check out the tree to some directory, which may consume
|
||||
considerable space in case of large projects. By default it
|
||||
does this in the `.git-rewrite/` directory but you can override
|
||||
does this in the '.git-rewrite/' directory but you can override
|
||||
that choice by this parameter.
|
||||
|
||||
-f::
|
||||
|
@ -214,11 +214,6 @@ symref::
|
||||
`:lstrip` and `:rstrip` options in the same way as `refname`
|
||||
above.
|
||||
|
||||
worktreepath::
|
||||
The absolute path to the worktree in which the ref is checked
|
||||
out, if it is checked out in any linked worktree. Empty string
|
||||
otherwise.
|
||||
|
||||
In addition to the above, for commit and tag objects, the header
|
||||
field names (`tree`, `parent`, `object`, `type`, and `tag`) can
|
||||
be used to specify the value in the header field.
|
||||
|
@ -22,8 +22,7 @@ SYNOPSIS
|
||||
[--rfc] [--subject-prefix=Subject-Prefix]
|
||||
[(--reroll-count|-v) <n>]
|
||||
[--to=<email>] [--cc=<email>]
|
||||
[--[no-]cover-letter] [--quiet]
|
||||
[--no-notes | --notes[=<ref>]]
|
||||
[--[no-]cover-letter] [--quiet] [--notes[=<ref>]]
|
||||
[--interdiff=<previous>]
|
||||
[--range-diff=<previous> [--creation-factor=<percent>]]
|
||||
[--progress]
|
||||
@ -264,7 +263,6 @@ material (this may change in the future).
|
||||
for details.
|
||||
|
||||
--notes[=<ref>]::
|
||||
--no-notes::
|
||||
Append the notes (see linkgit:git-notes[1]) for the commit
|
||||
after the three-dash line.
|
||||
+
|
||||
@ -275,9 +273,6 @@ these explanations after `format-patch` has run but before sending,
|
||||
keeping them as Git notes allows them to be maintained between versions
|
||||
of the patch series (but see the discussion of the `notes.rewrite`
|
||||
configuration options in linkgit:git-notes[1] to use this workflow).
|
||||
+
|
||||
The default is `--no-notes`, unless the `format.notes` configuration is
|
||||
set.
|
||||
|
||||
--[no-]signature=<signature>::
|
||||
Add a signature to each message produced. Per RFC 3676 the signature
|
||||
@ -426,8 +421,8 @@ One way to test if your MUA is set up correctly is:
|
||||
* Apply it:
|
||||
|
||||
$ git fetch <project> master:test-apply
|
||||
$ git switch test-apply
|
||||
$ git restore --source=HEAD --staged --worktree :/
|
||||
$ git checkout test-apply
|
||||
$ git reset --hard
|
||||
$ git am a.patch
|
||||
|
||||
If it does not apply correctly, there can be various reasons.
|
||||
|
@ -62,17 +62,9 @@ index file, all SHA-1 references in `refs` namespace, and all reflogs
|
||||
with --no-full.
|
||||
|
||||
--connectivity-only::
|
||||
Check only the connectivity of reachable objects, making sure
|
||||
that any objects referenced by a reachable tag, commit, or tree
|
||||
is present. This speeds up the operation by avoiding reading
|
||||
blobs entirely (though it does still check that referenced blobs
|
||||
exist). This will detect corruption in commits and trees, but
|
||||
not do any semantic checks (e.g., for format errors). Corruption
|
||||
in blob objects will not be detected at all.
|
||||
+
|
||||
Unreachable tags, commits, and trees will also be accessed to find the
|
||||
tips of dangling segments of history. Use `--no-dangling` if you don't
|
||||
care about this output and want to speed it up further.
|
||||
Check only the connectivity of tags, commits and tree objects. By
|
||||
avoiding to unpack blobs, this speeds up the operation, at the
|
||||
expense of missing corrupt objects or other problematic issues.
|
||||
|
||||
--strict::
|
||||
Enable more strict checking, namely to catch a file mode
|
||||
|
@ -20,16 +20,17 @@ created from prior invocations of 'git add', packing refs, pruning
|
||||
reflog, rerere metadata or stale working trees. May also update ancillary
|
||||
indexes such as the commit-graph.
|
||||
|
||||
When common porcelain operations that create objects are run, they
|
||||
will check whether the repository has grown substantially since the
|
||||
last maintenance, and if so run `git gc` automatically. See `gc.auto`
|
||||
below for how to disable this behavior.
|
||||
Users are encouraged to run this task on a regular basis within
|
||||
each repository to maintain good disk space utilization and good
|
||||
operating performance.
|
||||
|
||||
Running `git gc` manually should only be needed when adding objects to
|
||||
a repository without regularly running such porcelain commands, to do
|
||||
a one-off repository optimization, or e.g. to clean up a suboptimal
|
||||
mass-import. See the "PACKFILE OPTIMIZATION" section in
|
||||
linkgit:git-fast-import[1] for more details on the import case.
|
||||
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
|
||||
disable this behavior permanently without further considerations, just do:
|
||||
|
||||
----------------------
|
||||
$ git config --global gc.auto 0
|
||||
----------------------
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
@ -39,17 +40,35 @@ OPTIONS
|
||||
space utilization and performance. This option will cause
|
||||
'git gc' to more aggressively optimize the repository at the expense
|
||||
of taking much more time. The effects of this optimization are
|
||||
mostly persistent. See the "AGGRESSIVE" section below for details.
|
||||
persistent, so this option only needs to be used occasionally; every
|
||||
few hundred changesets or so.
|
||||
|
||||
--auto::
|
||||
With this option, 'git gc' checks whether any housekeeping is
|
||||
required; if not, it exits without performing any work.
|
||||
Some git commands run `git gc --auto` after performing
|
||||
operations that could create many loose objects. Housekeeping
|
||||
is required if there are too many loose objects or too many
|
||||
packs in the repository.
|
||||
+
|
||||
See the `gc.auto` option in the "CONFIGURATION" section below for how
|
||||
this heuristic works.
|
||||
If the number of loose objects exceeds the value of the `gc.auto`
|
||||
configuration variable, then all loose objects are combined into a
|
||||
single pack using `git repack -d -l`. Setting the value of `gc.auto`
|
||||
to 0 disables automatic packing of loose objects.
|
||||
+
|
||||
Once housekeeping is triggered by exceeding the limits of
|
||||
configuration options such as `gc.auto` and `gc.autoPackLimit`, all
|
||||
If the number of packs exceeds the value of `gc.autoPackLimit`,
|
||||
then existing packs (except those marked with a `.keep` file
|
||||
or over `gc.bigPackThreshold` limit)
|
||||
are consolidated into a single pack by using the `-A` option of
|
||||
'git repack'.
|
||||
If the amount of memory is estimated not enough for `git repack` to
|
||||
run smoothly and `gc.bigPackThreshold` is not set, the largest
|
||||
pack will also be excluded (this is the equivalent of running `git gc`
|
||||
with `--keep-base-pack`).
|
||||
Setting `gc.autoPackLimit` to 0 disables automatic consolidation of
|
||||
packs.
|
||||
+
|
||||
If houskeeping is required due to many loose objects or packs, all
|
||||
other housekeeping tasks (e.g. rerere, working trees, reflog...) will
|
||||
be performed as well.
|
||||
|
||||
@ -57,7 +76,7 @@ be performed as well.
|
||||
--prune=<date>::
|
||||
Prune loose objects older than date (default is 2 weeks ago,
|
||||
overridable by the config variable `gc.pruneExpire`).
|
||||
--prune=now prunes loose objects regardless of their age and
|
||||
--prune=all prunes loose objects regardless of their age and
|
||||
increases the risk of corruption if another process is writing to
|
||||
the repository concurrently; see "NOTES" below. --prune is on by
|
||||
default.
|
||||
@ -77,39 +96,69 @@ be performed as well.
|
||||
`.keep` files are consolidated into a single pack. When this
|
||||
option is used, `gc.bigPackThreshold` is ignored.
|
||||
|
||||
AGGRESSIVE
|
||||
----------
|
||||
|
||||
When the `--aggressive` option is supplied, linkgit:git-repack[1] will
|
||||
be invoked with the `-f` flag, which in turn will pass
|
||||
`--no-reuse-delta` to linkgit:git-pack-objects[1]. This will throw
|
||||
away any existing deltas and re-compute them, at the expense of
|
||||
spending much more time on the repacking.
|
||||
|
||||
The effects of this are mostly persistent, e.g. when packs and loose
|
||||
objects are coalesced into one another pack the existing deltas in
|
||||
that pack might get re-used, but there are also various cases where we
|
||||
might pick a sub-optimal delta from a newer pack instead.
|
||||
|
||||
Furthermore, supplying `--aggressive` will tweak the `--depth` and
|
||||
`--window` options passed to linkgit:git-repack[1]. See the
|
||||
`gc.aggressiveDepth` and `gc.aggressiveWindow` settings below. By
|
||||
using a larger window size we're more likely to find more optimal
|
||||
deltas.
|
||||
|
||||
It's probably not worth it to use this option on a given repository
|
||||
without running tailored performance benchmarks on it. It takes a lot
|
||||
more time, and the resulting space/delta optimization may or may not
|
||||
be worth it. Not using this at all is the right trade-off for most
|
||||
users and their repositories.
|
||||
|
||||
CONFIGURATION
|
||||
-------------
|
||||
|
||||
The below documentation is the same as what's found in
|
||||
linkgit:git-config[1]:
|
||||
The optional configuration variable `gc.reflogExpire` can be
|
||||
set to indicate how long historical entries within each branch's
|
||||
reflog should remain available in this repository. The setting is
|
||||
expressed as a length of time, for example '90 days' or '3 months'.
|
||||
It defaults to '90 days'.
|
||||
|
||||
The optional configuration variable `gc.reflogExpireUnreachable`
|
||||
can be set to indicate how long historical reflog entries which
|
||||
are not part of the current branch should remain available in
|
||||
this repository. These types of entries are generally created as
|
||||
a result of using `git commit --amend` or `git rebase` and are the
|
||||
commits prior to the amend or rebase occurring. Since these changes
|
||||
are not part of the current project most users will want to expire
|
||||
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
|
||||
how long records of conflicted merge you resolved earlier are
|
||||
kept. This defaults to 60 days.
|
||||
|
||||
The optional configuration variable `gc.rerereUnresolved` indicates
|
||||
how long records of conflicted merge you have not resolved are
|
||||
kept. This defaults to 15 days.
|
||||
|
||||
The optional configuration variable `gc.packRefs` determines if
|
||||
'git gc' runs 'git pack-refs'. This can be set to "notbare" to enable
|
||||
it within all non-bare repos or it can be set to a boolean value.
|
||||
This defaults to true.
|
||||
|
||||
The optional configuration variable `gc.writeCommitGraph` determines if
|
||||
'git gc' should run 'git commit-graph write'. This can be set to a
|
||||
boolean value. This defaults to false.
|
||||
|
||||
The optional configuration variable `gc.aggressiveWindow` controls how
|
||||
much time is spent optimizing the delta compression of the objects in
|
||||
the repository when the --aggressive option is specified. The larger
|
||||
the value, the more time is spent optimizing the delta compression. See
|
||||
the documentation for the --window option in linkgit:git-repack[1] for
|
||||
more details. This defaults to 250.
|
||||
|
||||
Similarly, the optional configuration variable `gc.aggressiveDepth`
|
||||
controls --depth option in linkgit:git-repack[1]. This defaults to 50.
|
||||
|
||||
The optional configuration variable `gc.pruneExpire` controls how old
|
||||
the unreferenced loose objects have to be before they are pruned. The
|
||||
default is "2 weeks ago".
|
||||
|
||||
Optional configuration variable `gc.worktreePruneExpire` controls how
|
||||
old a stale working tree should be before `git worktree prune` deletes
|
||||
it. Default is "3 months ago".
|
||||
|
||||
include::config/gc.txt[]
|
||||
|
||||
NOTES
|
||||
-----
|
||||
@ -119,8 +168,8 @@ anywhere in your repository. In
|
||||
particular, it will keep not only objects referenced by your current set
|
||||
of branches and tags, but also objects referenced by the index,
|
||||
remote-tracking branches, refs saved by 'git filter-branch' in
|
||||
refs/original/, reflogs (which may reference commits in branches
|
||||
that were later amended or rewound), and anything else in the refs/* namespace.
|
||||
refs/original/, or reflogs (which may reference commits in branches
|
||||
that were later amended or rewound).
|
||||
If you are expecting some objects to be deleted and they aren't, check
|
||||
all of those locations and decide whether it makes sense in your case to
|
||||
remove those references.
|
||||
@ -141,7 +190,8 @@ mitigate this problem:
|
||||
|
||||
However, these features fall short of a complete solution, so users who
|
||||
run commands concurrently have to live with some risk of corruption (which
|
||||
seems to be low in practice).
|
||||
seems to be low in practice) unless they turn off automatic garbage
|
||||
collection with 'git config gc.auto 0'.
|
||||
|
||||
HOOKS
|
||||
-----
|
||||
|
@ -88,7 +88,7 @@ OPTIONS
|
||||
mechanism. Only useful with `--untracked`.
|
||||
|
||||
--exclude-standard::
|
||||
Do not pay attention to ignored files specified via the `.gitignore`
|
||||
Do not pay attention to ignored files specified via the `.gitignore`
|
||||
mechanism. Only useful when searching files in the current directory
|
||||
with `--no-index`.
|
||||
|
||||
|
@ -18,7 +18,9 @@ Computes the object ID value for an object with specified type
|
||||
with the contents of the named file (which can be outside of the
|
||||
work tree), and optionally writes the resulting object into the
|
||||
object database. Reports its object ID to its standard output.
|
||||
When <type> is not specified, it defaults to "blob".
|
||||
This is used by 'git cvsimport' to update the index
|
||||
without modifying files in the work tree. When <type> is not
|
||||
specified, it defaults to "blob".
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
|
@ -171,8 +171,8 @@ variable, we launch 'kfmclient' to try to open the man page on an
|
||||
already opened konqueror in a new tab if possible.
|
||||
|
||||
For consistency, we also try such a trick if 'man.konqueror.path' is
|
||||
set to something like `A_PATH_TO/konqueror`. That means we will try to
|
||||
launch `A_PATH_TO/kfmclient` instead.
|
||||
set to something like 'A_PATH_TO/konqueror'. That means we will try to
|
||||
launch 'A_PATH_TO/kfmclient' instead.
|
||||
|
||||
If you really want to use 'konqueror', then you can use something like
|
||||
the following:
|
||||
|
@ -162,7 +162,7 @@ ScriptAliasMatch ^/git/[^/]*(.*) /usr/libexec/git-core/git-http-backend/storage.
|
||||
|
||||
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
|
||||
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:
|
||||
+
|
||||
|
@ -3,7 +3,7 @@ git-interpret-trailers(1)
|
||||
|
||||
NAME
|
||||
----
|
||||
git-interpret-trailers - Add or parse structured information in commit messages
|
||||
git-interpret-trailers - add or parse structured information in commit messages
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
|
@ -49,7 +49,7 @@ OPTIONS
|
||||
Print out the ref name given on the command line by which each
|
||||
commit was reached.
|
||||
|
||||
--[no-]use-mailmap::
|
||||
--use-mailmap::
|
||||
Use mailmap file to map author and committer names and email
|
||||
addresses to canonical real names and email addresses. See
|
||||
linkgit:git-shortlog[1].
|
||||
|
@ -118,7 +118,6 @@ OPTIONS
|
||||
linkgit:git-status[1] `--short` or linkgit:git-diff[1]
|
||||
`--name-status` for more user-friendly alternatives.
|
||||
+
|
||||
--
|
||||
This option identifies the file status with the following tags (followed by
|
||||
a space) at the start of each line:
|
||||
|
||||
@ -129,7 +128,6 @@ a space) at the start of each line:
|
||||
C:: modified/changed
|
||||
K:: to be killed
|
||||
?:: other
|
||||
--
|
||||
|
||||
-v::
|
||||
Similar to `-t`, but use lowercase letters for files
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user