Compare commits
20 Commits
v2.28.0-rc
...
v2.25.5
Author | SHA1 | Date | |
---|---|---|---|
42ce4c7930 | |||
97d1dcb1ef | |||
06214d171b | |||
92ac04b8ee | |||
d60b6a96f0 | |||
4bd06fd490 | |||
c753e2a7a8 | |||
bcf08f33d8 | |||
c735d7470e | |||
b1726b1a38 | |||
8b1a5f33d3 | |||
804963848e | |||
9fb2a1fb08 | |||
fb049fd85b | |||
6eed462c8f | |||
9b77cec89b | |||
6b82d3eea6 | |||
22539ec3b5 | |||
0d58fef58a | |||
684dd4c2b4 |
@ -4,7 +4,7 @@ insert_final_newline = true
|
|||||||
|
|
||||||
# The settings for C (*.c and *.h) files are mirrored in .clang-format. Keep
|
# The settings for C (*.c and *.h) files are mirrored in .clang-format. Keep
|
||||||
# them in sync.
|
# them in sync.
|
||||||
[*.{c,h,sh,perl,pl,pm,txt}]
|
[*.{c,h,sh,perl,pl,pm}]
|
||||||
indent_style = tab
|
indent_style = tab
|
||||||
tab_width = 8
|
tab_width = 8
|
||||||
|
|
||||||
|
3
.github/CONTRIBUTING.md
vendored
3
.github/CONTRIBUTING.md
vendored
@ -16,7 +16,4 @@ If you prefer video, then [this talk](https://www.youtube.com/watch?v=Q7i_qQW__q
|
|||||||
might be useful to you as the presenter walks you through the contribution
|
might be useful to you as the presenter walks you through the contribution
|
||||||
process by example.
|
process by example.
|
||||||
|
|
||||||
Or, you can follow the ["My First Contribution"](https://git-scm.com/docs/MyFirstContribution)
|
|
||||||
tutorial for another example of the contribution process.
|
|
||||||
|
|
||||||
Your friendly Git community!
|
Your friendly Git community!
|
||||||
|
305
.github/workflows/main.yml
vendored
305
.github/workflows/main.yml
vendored
@ -1,305 +0,0 @@
|
|||||||
name: CI/PR
|
|
||||||
|
|
||||||
on: [push, pull_request]
|
|
||||||
|
|
||||||
env:
|
|
||||||
DEVELOPER: 1
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
ci-config:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
outputs:
|
|
||||||
enabled: ${{ steps.check-ref.outputs.enabled }}
|
|
||||||
steps:
|
|
||||||
- name: try to clone ci-config branch
|
|
||||||
continue-on-error: true
|
|
||||||
run: |
|
|
||||||
git -c protocol.version=2 clone \
|
|
||||||
--no-tags \
|
|
||||||
--single-branch \
|
|
||||||
-b ci-config \
|
|
||||||
--depth 1 \
|
|
||||||
--no-checkout \
|
|
||||||
--filter=blob:none \
|
|
||||||
https://github.com/${{ github.repository }} \
|
|
||||||
config-repo &&
|
|
||||||
cd config-repo &&
|
|
||||||
git checkout HEAD -- ci/config
|
|
||||||
- id: check-ref
|
|
||||||
name: check whether CI is enabled for ref
|
|
||||||
run: |
|
|
||||||
enabled=yes
|
|
||||||
if test -x config-repo/ci/config/allow-ref &&
|
|
||||||
! config-repo/ci/config/allow-ref '${{ github.ref }}'
|
|
||||||
then
|
|
||||||
enabled=no
|
|
||||||
fi
|
|
||||||
echo "::set-output name=enabled::$enabled"
|
|
||||||
|
|
||||||
windows-build:
|
|
||||||
needs: ci-config
|
|
||||||
if: needs.ci-config.outputs.enabled == 'yes'
|
|
||||||
runs-on: windows-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- name: download git-sdk-64-minimal
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
## Get artifact
|
|
||||||
urlbase=https://dev.azure.com/git-for-windows/git/_apis/build/builds
|
|
||||||
id=$(curl "$urlbase?definitions=22&statusFilter=completed&resultFilter=succeeded&\$top=1" |
|
|
||||||
jq -r ".value[] | .id")
|
|
||||||
download_url="$(curl "$urlbase/$id/artifacts" |
|
|
||||||
jq -r '.value[] | select(.name == "git-sdk-64-minimal").resource.downloadUrl')"
|
|
||||||
curl --connect-timeout 10 --retry 5 --retry-delay 0 --retry-max-time 240 \
|
|
||||||
-o artifacts.zip "$download_url"
|
|
||||||
|
|
||||||
## Unzip and remove the artifact
|
|
||||||
unzip artifacts.zip
|
|
||||||
rm artifacts.zip
|
|
||||||
- name: build
|
|
||||||
shell: powershell
|
|
||||||
env:
|
|
||||||
HOME: ${{runner.workspace}}
|
|
||||||
MSYSTEM: MINGW64
|
|
||||||
NO_PERL: 1
|
|
||||||
run: |
|
|
||||||
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
|
||||||
printf '%s\n' /git-sdk-64-minimal/ >>.git/info/exclude
|
|
||||||
|
|
||||||
ci/make-test-artifacts.sh artifacts
|
|
||||||
"@
|
|
||||||
- name: upload build artifacts
|
|
||||||
uses: actions/upload-artifact@v1
|
|
||||||
with:
|
|
||||||
name: windows-artifacts
|
|
||||||
path: artifacts
|
|
||||||
- name: upload git-sdk-64-minimal
|
|
||||||
uses: actions/upload-artifact@v1
|
|
||||||
with:
|
|
||||||
name: git-sdk-64-minimal
|
|
||||||
path: git-sdk-64-minimal
|
|
||||||
windows-test:
|
|
||||||
runs-on: windows-latest
|
|
||||||
needs: [windows-build]
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- name: download build artifacts
|
|
||||||
uses: actions/download-artifact@v1
|
|
||||||
with:
|
|
||||||
name: windows-artifacts
|
|
||||||
path: ${{github.workspace}}
|
|
||||||
- name: extract build artifacts
|
|
||||||
shell: bash
|
|
||||||
run: tar xf artifacts.tar.gz
|
|
||||||
- name: download git-sdk-64-minimal
|
|
||||||
uses: actions/download-artifact@v1
|
|
||||||
with:
|
|
||||||
name: git-sdk-64-minimal
|
|
||||||
path: ${{github.workspace}}/git-sdk-64-minimal/
|
|
||||||
- name: test
|
|
||||||
shell: powershell
|
|
||||||
run: |
|
|
||||||
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
|
||||||
# Let Git ignore the SDK
|
|
||||||
printf '%s\n' /git-sdk-64-minimal/ >>.git/info/exclude
|
|
||||||
|
|
||||||
ci/run-test-slice.sh ${{matrix.nr}} 10
|
|
||||||
"@
|
|
||||||
- name: ci/print-test-failures.sh
|
|
||||||
if: failure()
|
|
||||||
shell: powershell
|
|
||||||
run: |
|
|
||||||
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc ci/print-test-failures.sh
|
|
||||||
- name: Upload failed tests' directories
|
|
||||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
|
||||||
uses: actions/upload-artifact@v1
|
|
||||||
with:
|
|
||||||
name: failed-tests-windows
|
|
||||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
|
||||||
vs-build:
|
|
||||||
needs: ci-config
|
|
||||||
if: needs.ci-config.outputs.enabled == 'yes'
|
|
||||||
env:
|
|
||||||
MSYSTEM: MINGW64
|
|
||||||
NO_PERL: 1
|
|
||||||
GIT_CONFIG_PARAMETERS: "'user.name=CI' 'user.email=ci@git'"
|
|
||||||
runs-on: windows-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- name: download git-sdk-64-minimal
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
## Get artifact
|
|
||||||
urlbase=https://dev.azure.com/git-for-windows/git/_apis/build/builds
|
|
||||||
id=$(curl "$urlbase?definitions=22&statusFilter=completed&resultFilter=succeeded&\$top=1" |
|
|
||||||
jq -r ".value[] | .id")
|
|
||||||
download_url="$(curl "$urlbase/$id/artifacts" |
|
|
||||||
jq -r '.value[] | select(.name == "git-sdk-64-minimal").resource.downloadUrl')"
|
|
||||||
curl --connect-timeout 10 --retry 5 --retry-delay 0 --retry-max-time 240 \
|
|
||||||
-o artifacts.zip "$download_url"
|
|
||||||
|
|
||||||
## Unzip and remove the artifact
|
|
||||||
unzip artifacts.zip
|
|
||||||
rm artifacts.zip
|
|
||||||
- name: generate Visual Studio solution
|
|
||||||
shell: powershell
|
|
||||||
run: |
|
|
||||||
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
|
||||||
make NDEBUG=1 DEVELOPER=1 vcxproj
|
|
||||||
"@
|
|
||||||
if (!$?) { exit(1) }
|
|
||||||
- name: download vcpkg artifacts
|
|
||||||
shell: powershell
|
|
||||||
run: |
|
|
||||||
$urlbase = "https://dev.azure.com/git/git/_apis/build/builds"
|
|
||||||
$id = ((Invoke-WebRequest -UseBasicParsing "${urlbase}?definitions=9&statusFilter=completed&resultFilter=succeeded&`$top=1").content | ConvertFrom-JSON).value[0].id
|
|
||||||
$downloadUrl = ((Invoke-WebRequest -UseBasicParsing "${urlbase}/$id/artifacts").content | ConvertFrom-JSON).value[0].resource.downloadUrl
|
|
||||||
(New-Object Net.WebClient).DownloadFile($downloadUrl, "compat.zip")
|
|
||||||
Expand-Archive compat.zip -DestinationPath . -Force
|
|
||||||
Remove-Item compat.zip
|
|
||||||
- name: add msbuild to PATH
|
|
||||||
uses: microsoft/setup-msbuild@v1.0.0
|
|
||||||
- name: MSBuild
|
|
||||||
run: msbuild git.sln -property:Configuration=Release -property:Platform=x64 -maxCpuCount:4 -property:PlatformToolset=v142
|
|
||||||
- name: bundle artifact tar
|
|
||||||
shell: powershell
|
|
||||||
env:
|
|
||||||
MSVC: 1
|
|
||||||
VCPKG_ROOT: ${{github.workspace}}\compat\vcbuild\vcpkg
|
|
||||||
run: |
|
|
||||||
& compat\vcbuild\vcpkg_copy_dlls.bat release
|
|
||||||
if (!$?) { exit(1) }
|
|
||||||
& git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
|
||||||
mkdir -p artifacts &&
|
|
||||||
eval \"`$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts 2>&1 | grep ^tar)\"
|
|
||||||
"@
|
|
||||||
- name: upload build artifacts
|
|
||||||
uses: actions/upload-artifact@v1
|
|
||||||
with:
|
|
||||||
name: vs-artifacts
|
|
||||||
path: artifacts
|
|
||||||
vs-test:
|
|
||||||
runs-on: windows-latest
|
|
||||||
needs: [vs-build, windows-build]
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- name: download git-sdk-64-minimal
|
|
||||||
uses: actions/download-artifact@v1
|
|
||||||
with:
|
|
||||||
name: git-sdk-64-minimal
|
|
||||||
path: ${{github.workspace}}/git-sdk-64-minimal/
|
|
||||||
- name: download build artifacts
|
|
||||||
uses: actions/download-artifact@v1
|
|
||||||
with:
|
|
||||||
name: vs-artifacts
|
|
||||||
path: ${{github.workspace}}
|
|
||||||
- name: extract build artifacts
|
|
||||||
shell: bash
|
|
||||||
run: tar xf artifacts.tar.gz
|
|
||||||
- name: test (parallel)
|
|
||||||
shell: powershell
|
|
||||||
env:
|
|
||||||
MSYSTEM: MINGW64
|
|
||||||
NO_SVN_TESTS: 1
|
|
||||||
GIT_TEST_SKIP_REBASE_P: 1
|
|
||||||
run: |
|
|
||||||
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
|
||||||
# Let Git ignore the SDK and the test-cache
|
|
||||||
printf '%s\n' /git-sdk-64-minimal/ /test-cache/ >>.git/info/exclude
|
|
||||||
|
|
||||||
cd t &&
|
|
||||||
PATH=\"`$PWD/helper:`$PATH\" &&
|
|
||||||
test-tool.exe run-command testsuite --jobs=10 -V -x --write-junit-xml \
|
|
||||||
`$(test-tool.exe path-utils slice-tests \
|
|
||||||
${{matrix.nr}} 10 t[0-9]*.sh)
|
|
||||||
"@
|
|
||||||
regular:
|
|
||||||
needs: ci-config
|
|
||||||
if: needs.ci-config.outputs.enabled == 'yes'
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
vector:
|
|
||||||
- jobname: linux-clang
|
|
||||||
cc: clang
|
|
||||||
pool: ubuntu-latest
|
|
||||||
- jobname: linux-gcc
|
|
||||||
cc: gcc
|
|
||||||
pool: ubuntu-latest
|
|
||||||
- jobname: osx-clang
|
|
||||||
cc: clang
|
|
||||||
pool: macos-latest
|
|
||||||
- jobname: osx-gcc
|
|
||||||
cc: gcc
|
|
||||||
pool: macos-latest
|
|
||||||
- jobname: GETTEXT_POISON
|
|
||||||
cc: gcc
|
|
||||||
pool: ubuntu-latest
|
|
||||||
env:
|
|
||||||
CC: ${{matrix.vector.cc}}
|
|
||||||
jobname: ${{matrix.vector.jobname}}
|
|
||||||
runs-on: ${{matrix.vector.pool}}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- run: ci/install-dependencies.sh
|
|
||||||
- run: ci/run-build-and-tests.sh
|
|
||||||
- run: ci/print-test-failures.sh
|
|
||||||
if: failure()
|
|
||||||
- name: Upload failed tests' directories
|
|
||||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
|
||||||
uses: actions/upload-artifact@v1
|
|
||||||
with:
|
|
||||||
name: failed-tests-${{matrix.vector.jobname}}
|
|
||||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
|
||||||
dockerized:
|
|
||||||
needs: ci-config
|
|
||||||
if: needs.ci-config.outputs.enabled == 'yes'
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
vector:
|
|
||||||
- jobname: linux-musl
|
|
||||||
image: alpine
|
|
||||||
- jobname: Linux32
|
|
||||||
image: daald/ubuntu32:xenial
|
|
||||||
env:
|
|
||||||
jobname: ${{matrix.vector.jobname}}
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
container: ${{matrix.vector.image}}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- run: ci/install-docker-dependencies.sh
|
|
||||||
- run: ci/run-build-and-tests.sh
|
|
||||||
- run: ci/print-test-failures.sh
|
|
||||||
if: failure()
|
|
||||||
- name: Upload failed tests' directories
|
|
||||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
|
||||||
uses: actions/upload-artifact@v1
|
|
||||||
with:
|
|
||||||
name: failed-tests-${{matrix.vector.jobname}}
|
|
||||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
|
||||||
static-analysis:
|
|
||||||
needs: ci-config
|
|
||||||
if: needs.ci-config.outputs.enabled == 'yes'
|
|
||||||
env:
|
|
||||||
jobname: StaticAnalysis
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- run: ci/install-dependencies.sh
|
|
||||||
- run: ci/run-static-analysis.sh
|
|
||||||
documentation:
|
|
||||||
needs: ci-config
|
|
||||||
if: needs.ci-config.outputs.enabled == 'yes'
|
|
||||||
env:
|
|
||||||
jobname: Documentation
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- run: ci/install-dependencies.sh
|
|
||||||
- run: ci/test-documentation.sh
|
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -25,7 +25,6 @@
|
|||||||
/git-bisect--helper
|
/git-bisect--helper
|
||||||
/git-blame
|
/git-blame
|
||||||
/git-branch
|
/git-branch
|
||||||
/git-bugreport
|
|
||||||
/git-bundle
|
/git-bundle
|
||||||
/git-cat-file
|
/git-cat-file
|
||||||
/git-check-attr
|
/git-check-attr
|
||||||
@ -84,6 +83,7 @@
|
|||||||
/git-init-db
|
/git-init-db
|
||||||
/git-interpret-trailers
|
/git-interpret-trailers
|
||||||
/git-instaweb
|
/git-instaweb
|
||||||
|
/git-legacy-stash
|
||||||
/git-log
|
/git-log
|
||||||
/git-ls-files
|
/git-ls-files
|
||||||
/git-ls-remote
|
/git-ls-remote
|
||||||
@ -189,7 +189,6 @@
|
|||||||
/gitweb/gitweb.cgi
|
/gitweb/gitweb.cgi
|
||||||
/gitweb/static/gitweb.js
|
/gitweb/static/gitweb.js
|
||||||
/gitweb/static/gitweb.min.*
|
/gitweb/static/gitweb.min.*
|
||||||
/config-list.h
|
|
||||||
/command-list.h
|
/command-list.h
|
||||||
*.tar.gz
|
*.tar.gz
|
||||||
*.dsc
|
*.dsc
|
||||||
|
1
.mailmap
1
.mailmap
@ -31,7 +31,6 @@ Brandon Casey <drafnel@gmail.com> <casey@nrlssc.navy.mil>
|
|||||||
Brandon Williams <bwilliams.eng@gmail.com> <bmwill@google.com>
|
Brandon Williams <bwilliams.eng@gmail.com> <bmwill@google.com>
|
||||||
brian m. carlson <sandals@crustytoothpaste.net>
|
brian m. carlson <sandals@crustytoothpaste.net>
|
||||||
brian m. carlson <sandals@crustytoothpaste.net> <sandals@crustytoothpaste.ath.cx>
|
brian m. carlson <sandals@crustytoothpaste.net> <sandals@crustytoothpaste.ath.cx>
|
||||||
brian m. carlson <sandals@crustytoothpaste.net> <bk2204@github.com>
|
|
||||||
Bryan Larsen <bryan@larsen.st> <bryan.larsen@gmail.com>
|
Bryan Larsen <bryan@larsen.st> <bryan.larsen@gmail.com>
|
||||||
Bryan Larsen <bryan@larsen.st> <bryanlarsen@yahoo.com>
|
Bryan Larsen <bryan@larsen.st> <bryanlarsen@yahoo.com>
|
||||||
Cheng Renquan <crquan@gmail.com>
|
Cheng Renquan <crquan@gmail.com>
|
||||||
|
12
.travis.yml
12
.travis.yml
@ -16,7 +16,7 @@ compiler:
|
|||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- env: jobname=GETTEXT_POISON
|
- env: jobname=GIT_TEST_GETTEXT_POISON
|
||||||
os: linux
|
os: linux
|
||||||
compiler:
|
compiler:
|
||||||
addons:
|
addons:
|
||||||
@ -32,15 +32,7 @@ matrix:
|
|||||||
services:
|
services:
|
||||||
- docker
|
- docker
|
||||||
before_install:
|
before_install:
|
||||||
script: ci/run-docker.sh
|
script: ci/run-linux32-docker.sh
|
||||||
- env: jobname=linux-musl
|
|
||||||
os: linux
|
|
||||||
compiler:
|
|
||||||
addons:
|
|
||||||
services:
|
|
||||||
- docker
|
|
||||||
before_install:
|
|
||||||
script: ci/run-docker.sh
|
|
||||||
- env: jobname=StaticAnalysis
|
- env: jobname=StaticAnalysis
|
||||||
os: linux
|
os: linux
|
||||||
compiler:
|
compiler:
|
||||||
|
@ -8,9 +8,3 @@
|
|||||||
# in practice it (hopefully!) doesn't matter.
|
# in practice it (hopefully!) doesn't matter.
|
||||||
race:^want_color$
|
race:^want_color$
|
||||||
race:^transfer_debug$
|
race:^transfer_debug$
|
||||||
|
|
||||||
# A boolean value, which tells whether the replace_map has been initialized or
|
|
||||||
# not, is read racily with an update. As this variable is written to only once,
|
|
||||||
# and it's OK if the value change right after reading it, this shouldn't be a
|
|
||||||
# problem.
|
|
||||||
race:^lookup_replace_object$
|
|
||||||
|
@ -91,10 +91,16 @@ For shell scripts specifically (not exhaustive):
|
|||||||
|
|
||||||
- No shell arrays.
|
- No shell arrays.
|
||||||
|
|
||||||
|
- No strlen ${#parameter}.
|
||||||
|
|
||||||
- No pattern replacement ${parameter/pattern/string}.
|
- No pattern replacement ${parameter/pattern/string}.
|
||||||
|
|
||||||
- We use Arithmetic Expansion $(( ... )).
|
- We use Arithmetic Expansion $(( ... )).
|
||||||
|
|
||||||
|
- Inside Arithmetic Expansion, spell shell variables with $ in front
|
||||||
|
of them, as some shells do not grok $((x)) while accepting $(($x))
|
||||||
|
just fine (e.g. dash older than 0.5.4).
|
||||||
|
|
||||||
- We do not use Process Substitution <(list) or >(list).
|
- We do not use Process Substitution <(list) or >(list).
|
||||||
|
|
||||||
- Do not write control structures on a single line with semicolon.
|
- Do not write control structures on a single line with semicolon.
|
||||||
@ -232,18 +238,6 @@ For C programs:
|
|||||||
while( condition )
|
while( condition )
|
||||||
func (bar+1);
|
func (bar+1);
|
||||||
|
|
||||||
- Do not explicitly compare an integral value with constant 0 or '\0',
|
|
||||||
or a pointer value with constant NULL. For instance, to validate that
|
|
||||||
counted array <ptr, cnt> is initialized but has no elements, write:
|
|
||||||
|
|
||||||
if (!ptr || cnt)
|
|
||||||
BUG("empty array expected");
|
|
||||||
|
|
||||||
and not:
|
|
||||||
|
|
||||||
if (ptr == NULL || cnt != 0);
|
|
||||||
BUG("empty array expected");
|
|
||||||
|
|
||||||
- We avoid using braces unnecessarily. I.e.
|
- We avoid using braces unnecessarily. I.e.
|
||||||
|
|
||||||
if (bla) {
|
if (bla) {
|
||||||
@ -489,11 +483,16 @@ For Python scripts:
|
|||||||
|
|
||||||
- We follow PEP-8 (http://www.python.org/dev/peps/pep-0008/).
|
- We follow PEP-8 (http://www.python.org/dev/peps/pep-0008/).
|
||||||
|
|
||||||
- As a minimum, we aim to be compatible with Python 2.7.
|
- As a minimum, we aim to be compatible with Python 2.6 and 2.7.
|
||||||
|
|
||||||
- Where required libraries do not restrict us to Python 2, we try to
|
- Where required libraries do not restrict us to Python 2, we try to
|
||||||
also be compatible with Python 3.1 and later.
|
also be compatible with Python 3.1 and later.
|
||||||
|
|
||||||
|
- When you must differentiate between Unicode literals and byte string
|
||||||
|
literals, it is OK to use the 'b' prefix. Even though the Python
|
||||||
|
documentation for version 2.6 does not mention this prefix, it has
|
||||||
|
been supported since version 2.6.0.
|
||||||
|
|
||||||
Error Messages
|
Error Messages
|
||||||
|
|
||||||
- Do not end error messages with a full stop.
|
- Do not end error messages with a full stop.
|
||||||
|
@ -30,7 +30,6 @@ MAN7_TXT += gitcredentials.txt
|
|||||||
MAN7_TXT += gitcvs-migration.txt
|
MAN7_TXT += gitcvs-migration.txt
|
||||||
MAN7_TXT += gitdiffcore.txt
|
MAN7_TXT += gitdiffcore.txt
|
||||||
MAN7_TXT += giteveryday.txt
|
MAN7_TXT += giteveryday.txt
|
||||||
MAN7_TXT += gitfaq.txt
|
|
||||||
MAN7_TXT += gitglossary.txt
|
MAN7_TXT += gitglossary.txt
|
||||||
MAN7_TXT += gitnamespaces.txt
|
MAN7_TXT += gitnamespaces.txt
|
||||||
MAN7_TXT += gitremote-helpers.txt
|
MAN7_TXT += gitremote-helpers.txt
|
||||||
@ -93,7 +92,6 @@ TECH_DOCS += technical/protocol-capabilities
|
|||||||
TECH_DOCS += technical/protocol-common
|
TECH_DOCS += technical/protocol-common
|
||||||
TECH_DOCS += technical/protocol-v2
|
TECH_DOCS += technical/protocol-v2
|
||||||
TECH_DOCS += technical/racy-git
|
TECH_DOCS += technical/racy-git
|
||||||
TECH_DOCS += technical/reftable
|
|
||||||
TECH_DOCS += technical/send-pack-pipeline
|
TECH_DOCS += technical/send-pack-pipeline
|
||||||
TECH_DOCS += technical/shallow
|
TECH_DOCS += technical/shallow
|
||||||
TECH_DOCS += technical/signature-format
|
TECH_DOCS += technical/signature-format
|
||||||
@ -151,9 +149,32 @@ endif
|
|||||||
-include ../config.mak.autogen
|
-include ../config.mak.autogen
|
||||||
-include ../config.mak
|
-include ../config.mak
|
||||||
|
|
||||||
|
#
|
||||||
|
# For docbook-xsl ...
|
||||||
|
# -1.68.1, no extra settings are needed?
|
||||||
|
# 1.69.0, set ASCIIDOC_ROFF?
|
||||||
|
# 1.69.1-1.71.0, set DOCBOOK_SUPPRESS_SP?
|
||||||
|
# 1.71.1, set ASCIIDOC_ROFF?
|
||||||
|
# 1.72.0, set DOCBOOK_XSL_172.
|
||||||
|
# 1.73.0-, no extra settings are needed
|
||||||
|
#
|
||||||
|
|
||||||
|
ifdef DOCBOOK_XSL_172
|
||||||
|
ASCIIDOC_EXTRA += -a git-asciidoc-no-roff
|
||||||
|
MANPAGE_XSL = manpage-1.72.xsl
|
||||||
|
else
|
||||||
|
ifndef ASCIIDOC_ROFF
|
||||||
|
# docbook-xsl after 1.72 needs the regular XSL, but will not
|
||||||
|
# pass-thru raw roff codes from asciidoc.conf, so turn them off.
|
||||||
|
ASCIIDOC_EXTRA += -a git-asciidoc-no-roff
|
||||||
|
endif
|
||||||
|
endif
|
||||||
ifndef NO_MAN_BOLD_LITERAL
|
ifndef NO_MAN_BOLD_LITERAL
|
||||||
XMLTO_EXTRA += -m manpage-bold-literal.xsl
|
XMLTO_EXTRA += -m manpage-bold-literal.xsl
|
||||||
endif
|
endif
|
||||||
|
ifdef DOCBOOK_SUPPRESS_SP
|
||||||
|
XMLTO_EXTRA += -m manpage-suppress-sp.xsl
|
||||||
|
endif
|
||||||
|
|
||||||
# Newer DocBook stylesheet emits warning cruft in the output when
|
# Newer DocBook stylesheet emits warning cruft in the output when
|
||||||
# this is not set, and if set it shows an absolute link. Older
|
# this is not set, and if set it shows an absolute link. Older
|
||||||
|
@ -23,42 +23,6 @@ useful additional context:
|
|||||||
- `Documentation/SubmittingPatches`
|
- `Documentation/SubmittingPatches`
|
||||||
- `Documentation/howto/new-command.txt`
|
- `Documentation/howto/new-command.txt`
|
||||||
|
|
||||||
[[getting-help]]
|
|
||||||
=== Getting Help
|
|
||||||
|
|
||||||
If you get stuck, you can seek help in the following places.
|
|
||||||
|
|
||||||
==== git@vger.kernel.org
|
|
||||||
|
|
||||||
This is the main Git project mailing list where code reviews, version
|
|
||||||
announcements, design discussions, and more take place. Those interested in
|
|
||||||
contributing are welcome to post questions here. The Git list requires
|
|
||||||
plain-text-only emails and prefers inline and bottom-posting when replying to
|
|
||||||
mail; you will be CC'd in all replies to you. Optionally, you can subscribe to
|
|
||||||
the list by sending an email to majordomo@vger.kernel.org with "subscribe git"
|
|
||||||
in the body. The https://lore.kernel.org/git[archive] of this mailing list is
|
|
||||||
available to view in a browser.
|
|
||||||
|
|
||||||
==== https://groups.google.com/forum/#!forum/git-mentoring[git-mentoring@googlegroups.com]
|
|
||||||
|
|
||||||
This mailing list is targeted to new contributors and was created as a place to
|
|
||||||
post questions and receive answers outside of the public eye of the main list.
|
|
||||||
Veteran contributors who are especially interested in helping mentor newcomers
|
|
||||||
are present on the list. In order to avoid search indexers, group membership is
|
|
||||||
required to view messages; anyone can join and no approval is required.
|
|
||||||
|
|
||||||
==== https://webchat.freenode.net/#git-devel[#git-devel] on Freenode
|
|
||||||
|
|
||||||
This IRC channel is for conversations between Git contributors. If someone is
|
|
||||||
currently online and knows the answer to your question, you can receive help
|
|
||||||
in real time. Otherwise, you can read the
|
|
||||||
https://colabti.org/irclogger/irclogger_logs/git-devel[scrollback] to see
|
|
||||||
whether someone answered you. IRC does not allow offline private messaging, so
|
|
||||||
if you try to private message someone and then log out of IRC, they cannot
|
|
||||||
respond to you. It's better to ask your questions in the channel so that you
|
|
||||||
can be answered if you disconnect and so that others can learn from the
|
|
||||||
conversation.
|
|
||||||
|
|
||||||
[[getting-started]]
|
[[getting-started]]
|
||||||
== Getting Started
|
== Getting Started
|
||||||
|
|
||||||
@ -1179,8 +1143,8 @@ look at the section below this one for some context.)
|
|||||||
[[after-approval]]
|
[[after-approval]]
|
||||||
=== After Review Approval
|
=== After Review Approval
|
||||||
|
|
||||||
The Git project has four integration branches: `seen`, `next`, `master`, and
|
The Git project has four integration branches: `pu`, `next`, `master`, and
|
||||||
`maint`. Your change will be placed into `seen` fairly early on by the maintainer
|
`maint`. Your change will be placed into `pu` fairly early on by the maintainer
|
||||||
while it is still in the review process; from there, when it is ready for wider
|
while it is still in the review process; from there, when it is ready for wider
|
||||||
testing, it will be merged into `next`. Plenty of early testers use `next` and
|
testing, it will be merged into `next`. Plenty of early testers use `next` and
|
||||||
may report issues. Eventually, changes in `next` will make it to `master`,
|
may report issues. Eventually, changes in `next` will make it to `master`,
|
||||||
|
@ -357,6 +357,9 @@ static void walken_commit_walk(struct rev_info *rev)
|
|||||||
...
|
...
|
||||||
|
|
||||||
while ((commit = get_revision(rev))) {
|
while ((commit = get_revision(rev))) {
|
||||||
|
if (!commit)
|
||||||
|
continue;
|
||||||
|
|
||||||
strbuf_reset(&prettybuf);
|
strbuf_reset(&prettybuf);
|
||||||
pp_commit_easy(CMIT_FMT_ONELINE, commit, &prettybuf);
|
pp_commit_easy(CMIT_FMT_ONELINE, commit, &prettybuf);
|
||||||
puts(prettybuf.buf);
|
puts(prettybuf.buf);
|
||||||
|
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.
|
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.
|
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.
|
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.
|
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.
|
7
Documentation/RelNotes/2.22.5.txt
Normal file
7
Documentation/RelNotes/2.22.5.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Git v2.22.5 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.17.6,
|
||||||
|
v2.18.5, v2.19.6, v2.20.5 and v2.21.4 to address the security
|
||||||
|
issue CVE-2021-21300; see the release notes for these versions
|
||||||
|
for details.
|
7
Documentation/RelNotes/2.23.4.txt
Normal file
7
Documentation/RelNotes/2.23.4.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Git v2.23.4 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.17.6, v2.18.5,
|
||||||
|
v2.19.6, v2.20.5, v2.21.4 and v2.22.5 to address the security
|
||||||
|
issue CVE-2021-21300; see the release notes for these versions
|
||||||
|
for details.
|
7
Documentation/RelNotes/2.24.4.txt
Normal file
7
Documentation/RelNotes/2.24.4.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Git v2.24.4 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.17.6, v2.18.5,
|
||||||
|
v2.19.6, v2.20.5, v2.21.4, v2.22.5 and v2.23.4 to address the
|
||||||
|
security issue CVE-2021-21300; see the release notes for these
|
||||||
|
versions for details.
|
7
Documentation/RelNotes/2.25.5.txt
Normal file
7
Documentation/RelNotes/2.25.5.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Git v2.25.5 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.17.6, v2.18.5,
|
||||||
|
v2.19.6, v2.20.5, v2.21.4, v2.22.5, v2.23.4 and v2.24.4 to address
|
||||||
|
the security issue CVE-2021-21300; see the release notes for
|
||||||
|
these versions for details.
|
@ -1,341 +0,0 @@
|
|||||||
Git 2.26 Release Notes
|
|
||||||
======================
|
|
||||||
|
|
||||||
Updates since v2.25
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Backward compatibility notes
|
|
||||||
|
|
||||||
* "git rebase" uses a different backend that is based on the 'merge'
|
|
||||||
machinery by default. There are a few known differences in the
|
|
||||||
behaviour from the traditional machinery based on patch+apply.
|
|
||||||
|
|
||||||
If your workflow is negatively affected by this change, please
|
|
||||||
report it to git@vger.kernel.org so that we can take a look into
|
|
||||||
it. After doing so, you can set the 'rebase.backend' configuration
|
|
||||||
variable to 'apply', in order to use the old default behaviour in
|
|
||||||
the meantime.
|
|
||||||
|
|
||||||
|
|
||||||
UI, Workflows & Features
|
|
||||||
|
|
||||||
* Sample credential helper for using .netrc has been updated to work
|
|
||||||
out of the box.
|
|
||||||
|
|
||||||
* gpg.minTrustLevel configuration variable has been introduced to
|
|
||||||
tell various signature verification codepaths the required minimum
|
|
||||||
trust level.
|
|
||||||
|
|
||||||
* The command line completion (in contrib/) learned to complete
|
|
||||||
subcommands and arguments to "git worktree".
|
|
||||||
|
|
||||||
* Disambiguation logic to tell revisions and pathspec apart has been
|
|
||||||
tweaked so that backslash-escaped glob special characters do not
|
|
||||||
count in the "wildcards are pathspec" rule.
|
|
||||||
|
|
||||||
* One effect of specifying where the GIT_DIR is (either with the
|
|
||||||
environment variable, or with the "git --git-dir=<where> cmd"
|
|
||||||
option) is to disable the repository discovery. This has been
|
|
||||||
placed a bit more stress in the documentation, as new users often
|
|
||||||
get confused.
|
|
||||||
|
|
||||||
* Two help messages given when "git add" notices the user gave it
|
|
||||||
nothing to add have been updated to use advise() API.
|
|
||||||
|
|
||||||
* A new version of fsmonitor-watchman hook has been introduced, to
|
|
||||||
avoid races.
|
|
||||||
|
|
||||||
* "git config" learned to show in which "scope", in addition to in
|
|
||||||
which file, each config setting comes from.
|
|
||||||
|
|
||||||
* The basic 7 colors learned the brighter counterparts
|
|
||||||
(e.g. "brightred").
|
|
||||||
|
|
||||||
* "git sparse-checkout" learned a new "add" subcommand.
|
|
||||||
|
|
||||||
* A configuration element used for credential subsystem can now use
|
|
||||||
wildcard pattern to specify for which set of URLs the entry
|
|
||||||
applies.
|
|
||||||
|
|
||||||
* "git clone --recurse-submodules --single-branch" now uses the same
|
|
||||||
single-branch option when cloning the submodules.
|
|
||||||
|
|
||||||
* "git rm" and "git stash" learns the new "--pathspec-from-file"
|
|
||||||
option.
|
|
||||||
|
|
||||||
* "git am --show-current-patch" is a way to show the piece of e-mail
|
|
||||||
for the stopped step, which is not suitable to directly feed "git
|
|
||||||
apply" (it is designed to be a good "git am" input). It learned a
|
|
||||||
new option to show only the patch part.
|
|
||||||
|
|
||||||
* Handling of conflicting renames in merge-recursive have further
|
|
||||||
been made consistent with how existing codepaths try to mimic what
|
|
||||||
is done to add/add conflicts.
|
|
||||||
|
|
||||||
|
|
||||||
Performance, Internal Implementation, Development Support etc.
|
|
||||||
|
|
||||||
* Tell .editorconfig that in this project, *.txt files are indented
|
|
||||||
with tabs.
|
|
||||||
|
|
||||||
* The test-lint machinery knew to check "VAR=VAL shell_function"
|
|
||||||
construct, but did not check "VAR= shell_function", which has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* Replace "git config --bool" calls with "git config --type=bool" in
|
|
||||||
sample templates.
|
|
||||||
|
|
||||||
* The effort to move "git-add--interactive" to C continues.
|
|
||||||
|
|
||||||
* Improve error message generation for "git submodule add".
|
|
||||||
|
|
||||||
* Preparation of test scripts for the day when the object names will
|
|
||||||
use SHA-256 continues.
|
|
||||||
|
|
||||||
* Warn programmers about pretend_object_file() that allows the code
|
|
||||||
to tentatively use in-core objects.
|
|
||||||
|
|
||||||
* The way "git pack-objects" reuses objects stored in existing pack
|
|
||||||
to generate its result has been improved.
|
|
||||||
|
|
||||||
* The transport protocol version 2 becomes the default one.
|
|
||||||
|
|
||||||
* Traditionally, we avoided threaded grep while searching in objects
|
|
||||||
(as opposed to files in the working tree) as accesses to the object
|
|
||||||
layer is not thread-safe. This limitation is getting lifted.
|
|
||||||
|
|
||||||
* "git rebase -i" (and friends) used to unnecessarily check out the
|
|
||||||
tip of the branch to be rebased, which has been corrected.
|
|
||||||
|
|
||||||
* A low-level API function get_oid(), that accepts various ways to
|
|
||||||
name an object, used to issue end-user facing error messages
|
|
||||||
without l10n, which has been updated to be translatable.
|
|
||||||
|
|
||||||
* Unneeded connectivity check is now disabled in a partial clone when
|
|
||||||
fetching into it.
|
|
||||||
|
|
||||||
* Some rough edges in the sparse-checkout feature, especially around
|
|
||||||
the cone mode, have been cleaned up.
|
|
||||||
|
|
||||||
* The diff-* plumbing family of subcommands now pay attention to the
|
|
||||||
diff.wsErrorHighlight configuration, which has been ignored before;
|
|
||||||
this allows "git add -p" to also show the whitespace problems to
|
|
||||||
the end user.
|
|
||||||
|
|
||||||
* Some codepaths were given a repository instance as a parameter to
|
|
||||||
work in the repository, but passed the_repository instance to its
|
|
||||||
callees, which has been cleaned up (somewhat).
|
|
||||||
|
|
||||||
* Memory footprint and performance of "git name-rev" has been
|
|
||||||
improved.
|
|
||||||
|
|
||||||
* The object reachability bitmap machinery and the partial cloning
|
|
||||||
machinery were not prepared to work well together, because some
|
|
||||||
object-filtering criteria that partial clones use inherently rely
|
|
||||||
on object traversal, but the bitmap machinery is an optimization
|
|
||||||
to bypass that object traversal. There however are some cases
|
|
||||||
where they can work together, and they were taught about them.
|
|
||||||
|
|
||||||
* "git rebase" has learned to use the merge backend (i.e. the
|
|
||||||
machinery that drives "rebase -i") by default, while allowing
|
|
||||||
"--apply" option to use the "apply" backend (e.g. the moral
|
|
||||||
equivalent of "format-patch piped to am"). The rebase.backend
|
|
||||||
configuration variable can be set to customize.
|
|
||||||
|
|
||||||
* Underlying machinery of "git bisect--helper" is being refactored
|
|
||||||
into pieces that are more easily reused.
|
|
||||||
|
|
||||||
|
|
||||||
Fixes since v2.25
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
* "git commit" gives output similar to "git status" when there is
|
|
||||||
nothing to commit, but without honoring the advise.statusHints
|
|
||||||
configuration variable, which has been corrected.
|
|
||||||
|
|
||||||
* has_object_file() said "no" given an object registered to the
|
|
||||||
system via pretend_object_file(), making it inconsistent with
|
|
||||||
read_object_file(), causing lazy fetch to attempt fetching an
|
|
||||||
empty tree from promisor remotes.
|
|
||||||
|
|
||||||
* Complete an update to tutorial that encourages "git switch" over
|
|
||||||
"git checkout" that was done only half-way.
|
|
||||||
|
|
||||||
* C pedantry ;-) fix.
|
|
||||||
|
|
||||||
* The code that tries to skip over the entries for the paths in a
|
|
||||||
single directory using the cache-tree was not careful enough
|
|
||||||
against corrupt index file.
|
|
||||||
|
|
||||||
* Reduce unnecessary round-trip when running "ls-remote" over the
|
|
||||||
stateless RPC mechanism.
|
|
||||||
|
|
||||||
* "git restore --staged" did not correctly update the cache-tree
|
|
||||||
structure, resulting in bogus trees to be written afterwards, which
|
|
||||||
has been corrected.
|
|
||||||
|
|
||||||
* The code recently added to move to the entry beyond the ones in the
|
|
||||||
same directory in the index in the sparse-cone mode did not count
|
|
||||||
the number of entries to skip over incorrectly, which has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* Rendering by "git log --graph" of ancestry lines leading to a merge
|
|
||||||
commit were made suboptimal to waste vertical space a bit with a
|
|
||||||
recent update, which has been corrected.
|
|
||||||
|
|
||||||
* Work around test breakages caused by custom regex engine used in
|
|
||||||
libasan, when address sanitizer is used with more recent versions
|
|
||||||
of gcc and clang.
|
|
||||||
|
|
||||||
* Minor bugfixes to "git add -i" that has recently been rewritten in C.
|
|
||||||
|
|
||||||
* "git fetch --refmap=" option has got a better documentation.
|
|
||||||
|
|
||||||
* "git checkout X" did not correctly fail when X is not a local
|
|
||||||
branch but could name more than one remote-tracking branches
|
|
||||||
(i.e. to be dwimmed as the starting point to create a corresponding
|
|
||||||
local branch), which has been corrected.
|
|
||||||
(merge fa74180d08 am/checkout-file-and-ref-ref-ambiguity later to maint).
|
|
||||||
|
|
||||||
* Corner case bugs in "git clean" that stems from a (necessarily for
|
|
||||||
performance reasons) awkward calling convention in the directory
|
|
||||||
enumeration API has been corrected.
|
|
||||||
|
|
||||||
* A fetch that is told to recursively fetch updates in submodules
|
|
||||||
inevitably produces reams of output, and it becomes hard to spot
|
|
||||||
error messages. The command has been taught to enumerate
|
|
||||||
submodules that had errors at the end of the operation.
|
|
||||||
(merge 0222540827 es/fetch-show-failed-submodules-atend later to maint).
|
|
||||||
|
|
||||||
* The "--recurse-submodules" option of various subcommands did not
|
|
||||||
work well when run in an alternate worktree, which has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* Futureproofing a test not to depend on the current implementation
|
|
||||||
detail.
|
|
||||||
|
|
||||||
* Running "git rm" on a submodule failed unnecessarily when
|
|
||||||
.gitmodules is only cache-dirty, which has been corrected.
|
|
||||||
|
|
||||||
* C pedantry ;-) fix.
|
|
||||||
|
|
||||||
* "git grep --no-index" should not get affected by the contents of
|
|
||||||
the .gitmodules file but when "--recurse-submodules" is given or
|
|
||||||
the "submodule.recurse" variable is set, it did. Now these
|
|
||||||
settings are ignored in the "--no-index" mode.
|
|
||||||
|
|
||||||
* Technical details of the bundle format has been documented.
|
|
||||||
|
|
||||||
* Unhelpful warning messages during documentation build have been squelched.
|
|
||||||
|
|
||||||
* "git rebase -i" identifies existing commits in its todo file with
|
|
||||||
their abbreviated object name, which could become ambiguous as it
|
|
||||||
goes to create new commits, and has a mechanism to avoid ambiguity
|
|
||||||
in the main part of its execution. A few other cases however were
|
|
||||||
not covered by the protection against ambiguity, which has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* Allow the rebase.missingCommitsCheck configuration to kick in when
|
|
||||||
"rebase --edit-todo" and "rebase --continue" restarts the procedure.
|
|
||||||
(merge 5a5445d878 ag/edit-todo-drop-check later to maint).
|
|
||||||
|
|
||||||
* The way "git submodule status" reports an initialized but not yet
|
|
||||||
populated submodule has not been reimplemented correctly when a
|
|
||||||
part of the "git submodule" command was rewritten in C, which has
|
|
||||||
been corrected.
|
|
||||||
(merge f38c92452d pk/status-of-uncloned-submodule later to maint).
|
|
||||||
|
|
||||||
* The code to automatically shrink the fan-out in the notes tree had
|
|
||||||
an off-by-one bug, which has been killed.
|
|
||||||
|
|
||||||
* The index-pack code now diagnoses a bad input packstream that
|
|
||||||
records the same object twice when it is used as delta base; the
|
|
||||||
code used to declare a software bug when encountering such an
|
|
||||||
input, but it is an input error.
|
|
||||||
|
|
||||||
|
|
||||||
* The code to compute the commit-graph has been taught to use a more
|
|
||||||
robust way to tell if two object directories refer to the same
|
|
||||||
thing.
|
|
||||||
(merge a7df60cac8 tb/commit-graph-object-dir later to maint).
|
|
||||||
|
|
||||||
* "git remote rename X Y" needs to adjust configuration variables
|
|
||||||
(e.g. branch.<name>.remote) whose value used to be X to Y.
|
|
||||||
branch.<name>.pushRemote is now also updated.
|
|
||||||
|
|
||||||
* Update to doc-diff.
|
|
||||||
|
|
||||||
* Doc markup fix.
|
|
||||||
|
|
||||||
* "git check-ignore" did not work when the given path is explicitly
|
|
||||||
marked as not ignored with a negative entry in the .gitignore file.
|
|
||||||
|
|
||||||
* The merge-recursive machinery failed to refresh the cache entry for
|
|
||||||
a merge result in a couple of places, resulting in an unnecessary
|
|
||||||
merge failure, which has been fixed.
|
|
||||||
|
|
||||||
* Fix for a bug revealed by a recent change to make the protocol v2
|
|
||||||
the default.
|
|
||||||
|
|
||||||
* In rare cases "git worktree add <path>" could think that <path>
|
|
||||||
was already a registered worktree even when it wasn't and refuse
|
|
||||||
to add the new worktree. This has been corrected.
|
|
||||||
(merge bb69b3b009 es/worktree-avoid-duplication-fix later to maint).
|
|
||||||
|
|
||||||
* "git push" should stop from updating a branch that is checked out
|
|
||||||
when receive.denyCurrentBranch configuration is set, but it failed
|
|
||||||
to pay attention to checkouts in secondary worktrees. This has
|
|
||||||
been corrected.
|
|
||||||
(merge 4d864895a2 hv/receive-denycurrent-everywhere later to maint).
|
|
||||||
|
|
||||||
* "git rebase BASE BRANCH" rebased/updated the tip of BRANCH and
|
|
||||||
checked it out, even when the BRANCH is checked out in a different
|
|
||||||
worktree. This has been corrected.
|
|
||||||
(merge b5cabb4a96 es/do-not-let-rebase-switch-to-protected-branch later to maint).
|
|
||||||
|
|
||||||
* "git describe" in a repository with multiple root commits sometimes
|
|
||||||
gave up looking for the best tag to describe a given commit with
|
|
||||||
too early, which has been adjusted.
|
|
||||||
|
|
||||||
* "git merge signed-tag" while lacking the public key started to say
|
|
||||||
"No signature", which was utterly wrong. This regression has been
|
|
||||||
reverted.
|
|
||||||
|
|
||||||
* MinGW's poll() emulation has been improved.
|
|
||||||
|
|
||||||
* "git show" and others gave an object name in raw format in its
|
|
||||||
error output, which has been corrected to give it in hex.
|
|
||||||
|
|
||||||
* "git fetch" over HTTP walker protocol did not show any progress
|
|
||||||
output. We inherently do not know how much work remains, but still
|
|
||||||
we can show something not to bore users.
|
|
||||||
(merge 7655b4119d rs/show-progress-in-dumb-http-fetch later to maint).
|
|
||||||
|
|
||||||
* Both "git ls-remote -h" and "git grep -h" give short usage help,
|
|
||||||
like any other Git subcommand, but it is not unreasonable to expect
|
|
||||||
that the former would behave the same as "git ls-remote --head"
|
|
||||||
(there is no other sensible behaviour for the latter). The
|
|
||||||
documentation has been updated in an attempt to clarify this.
|
|
||||||
|
|
||||||
* Other code cleanup, docfix, build fix, etc.
|
|
||||||
(merge d0d0a357a1 am/update-pathspec-f-f-tests later to maint).
|
|
||||||
(merge f94f7bd00d am/test-pathspec-f-f-error-cases later to maint).
|
|
||||||
(merge c513a958b6 ss/t6025-modernize later to maint).
|
|
||||||
(merge b441717256 dl/test-must-fail-fixes later to maint).
|
|
||||||
(merge d031049da3 mt/sparse-checkout-doc-update later to maint).
|
|
||||||
(merge 145136a95a jc/skip-prefix later to maint).
|
|
||||||
(merge 5290d45134 jk/alloc-cleanups later to maint).
|
|
||||||
(merge 7a9f8ca805 rs/parse-options-concat-dup later to maint).
|
|
||||||
(merge 517b60564e rs/strbuf-insertstr later to maint).
|
|
||||||
(merge f696a2b1c8 jk/mailinfo-cleanup later to maint).
|
|
||||||
(merge de26f02db1 js/test-avoid-pipe later to maint).
|
|
||||||
(merge a2dc43414c es/doc-mentoring later to maint).
|
|
||||||
(merge 02bbbe9df9 es/worktree-cleanup later to maint).
|
|
||||||
(merge 2ce6d075fa rs/micro-cleanups later to maint).
|
|
||||||
(merge 27f182b3fc rs/blame-typefix-for-fingerprint later to maint).
|
|
||||||
(merge 3c29e21eb0 ma/test-cleanup later to maint).
|
|
||||||
(merge 240fc04f81 ag/rebase-remove-redundant-code later to maint).
|
|
||||||
(merge d68ce906c7 rs/commit-graph-code-simplification later to maint).
|
|
||||||
(merge a51d9e8f07 rj/t1050-use-test-path-is-file later to maint).
|
|
||||||
(merge fd0bc17557 kk/complete-diff-color-moved later to maint).
|
|
||||||
(merge 65bf820d0e en/test-cleanup later to maint).
|
|
@ -1,5 +0,0 @@
|
|||||||
Git v2.26.1 Release Notes
|
|
||||||
=========================
|
|
||||||
|
|
||||||
This release merges the security fix that appears in v2.17.4; see
|
|
||||||
the release notes for that version for details.
|
|
@ -1,5 +0,0 @@
|
|||||||
Git v2.26.2 Release Notes
|
|
||||||
=========================
|
|
||||||
|
|
||||||
This release merges the security fix that appears in v2.17.5; see
|
|
||||||
the release notes for that version for details.
|
|
@ -1,525 +0,0 @@
|
|||||||
Git 2.27 Release Notes
|
|
||||||
======================
|
|
||||||
|
|
||||||
Updates since v2.26
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Backward compatibility notes
|
|
||||||
|
|
||||||
* When "git describe C" finds that commit C is pointed by a signed or
|
|
||||||
annotated tag, which records T as its tagname in the object, the
|
|
||||||
command gives T as its answer. Even if the user renames or moves
|
|
||||||
such a tag from its natural location in the "refs/tags/" hierarchy,
|
|
||||||
"git describe C" would still give T as the answer, but in such a
|
|
||||||
case "git show T^0" would no longer work as expected. There may be
|
|
||||||
nothing at "refs/tags/T" or even worse there may be a different tag
|
|
||||||
instead.
|
|
||||||
|
|
||||||
Starting from this version, "git describe" will always use the
|
|
||||||
"long" version, as if the "--long" option were given, when giving
|
|
||||||
its output based on such a misplaced tag to work around the problem.
|
|
||||||
|
|
||||||
* "git pull" issues a warning message until the pull.rebase
|
|
||||||
configuration variable is explicitly given, which some existing
|
|
||||||
users may find annoying---those who prefer not to rebase need to
|
|
||||||
set the variable to false to squelch the warning.
|
|
||||||
|
|
||||||
* The transport protocol version 2, which was promoted to the default
|
|
||||||
in Git 2.26 release, turned out to have some remaining rough edges,
|
|
||||||
so it has been demoted from the default.
|
|
||||||
|
|
||||||
|
|
||||||
UI, Workflows & Features
|
|
||||||
|
|
||||||
* A handful of options to configure SSL when talking to proxies have
|
|
||||||
been added.
|
|
||||||
|
|
||||||
* Smudge/clean conversion filters are now given more information
|
|
||||||
(e.g. the object of the tree-ish in which the blob being converted
|
|
||||||
appears, in addition to its path, which has already been given).
|
|
||||||
|
|
||||||
* When "git describe C" finds an annotated tag with tagname A to be
|
|
||||||
the best name to explain commit C, and the tag is stored in a
|
|
||||||
"wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the
|
|
||||||
command gave a warning message but used A (not B) to describe C.
|
|
||||||
If C is exactly at the tag, the describe output would be "A", but
|
|
||||||
"git rev-parse A^0" would not be equal as "git rev-parse C^0". The
|
|
||||||
behavior of the command has been changed to use the "long" form
|
|
||||||
i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.
|
|
||||||
|
|
||||||
* "git pull" learned to warn when no pull.rebase configuration
|
|
||||||
exists, and neither --[no-]rebase nor --ff-only is given (which
|
|
||||||
would result a merge).
|
|
||||||
|
|
||||||
* "git p4" learned four new hooks and also "--no-verify" option to
|
|
||||||
bypass them (and the existing "p4-pre-submit" hook).
|
|
||||||
|
|
||||||
* "git pull" shares many options with underlying "git fetch", but
|
|
||||||
some of them were not documented and some of those that would make
|
|
||||||
sense to pass down were not passed down.
|
|
||||||
|
|
||||||
* "git rebase" learned the "--no-gpg-sign" option to countermand
|
|
||||||
commit.gpgSign the user may have.
|
|
||||||
|
|
||||||
* The output from "git format-patch" uses RFC 2047 encoding for
|
|
||||||
non-ASCII letters on From: and Subject: headers, so that it can
|
|
||||||
directly be fed to e-mail programs. A new option has been added
|
|
||||||
to produce these headers in raw.
|
|
||||||
|
|
||||||
* "git log" learned "--show-pulls" that helps pathspec limited
|
|
||||||
history views; a merge commit that takes the whole change from a
|
|
||||||
side branch, which is normally omitted from the output, is shown
|
|
||||||
in addition to the commits that introduce real changes.
|
|
||||||
|
|
||||||
* The interactive input from various codepaths are consolidated and
|
|
||||||
any prompt possibly issued earlier are fflush()ed before we read.
|
|
||||||
|
|
||||||
* Allow "git rebase" to reapply all local commits, even if the may be
|
|
||||||
already in the upstream, without checking first.
|
|
||||||
|
|
||||||
* The 'pack.useSparse' configuration variable now defaults to 'true',
|
|
||||||
enabling an optimization that has been experimental since Git 2.21.
|
|
||||||
|
|
||||||
* "git rebase" happens to call some hooks meant for "checkout" and
|
|
||||||
"commit" by this was not a designed behaviour than historical
|
|
||||||
accident. This has been documented.
|
|
||||||
|
|
||||||
* "git merge" learns the "--autostash" option.
|
|
||||||
|
|
||||||
* "sparse-checkout" UI improvements.
|
|
||||||
|
|
||||||
* "git update-ref --stdin" learned a handful of new verbs to let the
|
|
||||||
user control ref update transactions more explicitly, which helps
|
|
||||||
as an ingredient to implement two-phase commit-style atomic
|
|
||||||
ref-updates across multiple repositories.
|
|
||||||
|
|
||||||
* "git commit-graph write" learned different ways to write out split
|
|
||||||
files.
|
|
||||||
|
|
||||||
* Introduce an extension to the commit-graph to make it efficient to
|
|
||||||
check for the paths that were modified at each commit using Bloom
|
|
||||||
filters.
|
|
||||||
|
|
||||||
* The approxidate parser learns to parse seconds with fraction and
|
|
||||||
ignore fractional part.
|
|
||||||
|
|
||||||
* The userdiff patterns for Markdown documents have been added.
|
|
||||||
|
|
||||||
* The sparse-checkout patterns have been forbidden from excluding all
|
|
||||||
paths, leaving an empty working tree, for a long time. This
|
|
||||||
limitation has been lifted.
|
|
||||||
|
|
||||||
* "git restore --staged --worktree" now defaults to take the contents
|
|
||||||
out of "HEAD", instead of erring out.
|
|
||||||
|
|
||||||
* "git p4" learned to recover from a (broken) state where a directory
|
|
||||||
and a file are recorded at the same path in the Perforce repository
|
|
||||||
the same way as their clients do.
|
|
||||||
|
|
||||||
* "git multi-pack-index repack" has been taught to honor some
|
|
||||||
repack.* configuration variables.
|
|
||||||
|
|
||||||
|
|
||||||
Performance, Internal Implementation, Development Support etc.
|
|
||||||
|
|
||||||
* The advise API has been revamped to allow more systematic enumeration of
|
|
||||||
advice knobs in the future.
|
|
||||||
|
|
||||||
* SHA-256 transition continues.
|
|
||||||
|
|
||||||
* The code to interface with GnuPG has been refactored.
|
|
||||||
|
|
||||||
* "git stash" has kept an escape hatch to use the scripted version
|
|
||||||
for a few releases, which got stale. It has been removed.
|
|
||||||
|
|
||||||
* Enable tests that require GnuPG on Windows.
|
|
||||||
|
|
||||||
* Minor test usability improvement.
|
|
||||||
|
|
||||||
* Trace2 enhancement to allow logging of the environment variables.
|
|
||||||
|
|
||||||
* Test clean-up continues.
|
|
||||||
|
|
||||||
* Perf-test update.
|
|
||||||
|
|
||||||
* A Windows-specific test element has been made more robust against
|
|
||||||
misuse from both user's environment and programmer's errors.
|
|
||||||
|
|
||||||
* Various tests have been updated to work around issues found with
|
|
||||||
shell utilities that come with busybox etc.
|
|
||||||
|
|
||||||
* The config API made mixed uses of int and size_t types to represent
|
|
||||||
length of various pieces of text it parsed, which has been updated
|
|
||||||
to use the correct type (i.e. size_t) throughout.
|
|
||||||
|
|
||||||
* The "--decorate-refs" and "--decorate-refs-exclude" options "git
|
|
||||||
log" takes have learned a companion configuration variable
|
|
||||||
log.excludeDecoration that sits at the lowest priority in the
|
|
||||||
family.
|
|
||||||
|
|
||||||
* A new CI job to build and run test suite on linux with musl libc
|
|
||||||
has been added.
|
|
||||||
|
|
||||||
* Update the CI configuration to use GitHub Actions, retiring the one
|
|
||||||
based on Azure Pipelines.
|
|
||||||
|
|
||||||
* The directory traversal code had redundant recursive calls which
|
|
||||||
made its performance characteristics exponential with respect to
|
|
||||||
the depth of the tree, which was corrected.
|
|
||||||
|
|
||||||
* "git blame" learns to take advantage of the "changed-paths" Bloom
|
|
||||||
filter stored in the commit-graph file.
|
|
||||||
|
|
||||||
* The "bugreport" tool has been added.
|
|
||||||
|
|
||||||
* The object walk with object filter "--filter=tree:0" can now take
|
|
||||||
advantage of the pack bitmap when available.
|
|
||||||
|
|
||||||
* Instead of always building all branches at GitHub via Actions,
|
|
||||||
users can specify which branches to build.
|
|
||||||
|
|
||||||
* Codepaths that show progress meter have been taught to also use the
|
|
||||||
start_progress() and the stop_progress() calls as a "region" to be
|
|
||||||
traced.
|
|
||||||
|
|
||||||
* Instead of downloading Windows SDK for CI jobs for windows builds
|
|
||||||
from an external site (wingit.blob.core.windows.net), use the one
|
|
||||||
created in the windows-build job, to work around quota issues at
|
|
||||||
the external site.
|
|
||||||
|
|
||||||
|
|
||||||
Fixes since v2.26
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
* The real_path() convenience function can easily be misused; with a
|
|
||||||
bit of code refactoring in the callers' side, its use has been
|
|
||||||
eliminated.
|
|
||||||
(merge 49d3c4b481 am/real-path-fix later to maint).
|
|
||||||
|
|
||||||
* Update "git p4" to work with Python 3.
|
|
||||||
(merge 6bb40ed20a yz/p4-py3 later to maint).
|
|
||||||
|
|
||||||
* The mechanism to prevent "git commit" from making an empty commit
|
|
||||||
or amending during an interrupted cherry-pick was broken during the
|
|
||||||
rewrite of "git rebase" in C, which has been corrected.
|
|
||||||
(merge 430b75f720 pw/advise-rebase-skip later to maint).
|
|
||||||
|
|
||||||
* Fix "git checkout --recurse-submodules" of a nested submodule
|
|
||||||
hierarchy.
|
|
||||||
(merge 846f34d351 pb/recurse-submodules-fix later to maint).
|
|
||||||
|
|
||||||
* The "--fork-point" mode of "git rebase" regressed when the command
|
|
||||||
was rewritten in C back in 2.20 era, which has been corrected.
|
|
||||||
(merge f08132f889 at/rebase-fork-point-regression-fix later to maint).
|
|
||||||
|
|
||||||
* The import-tars importer (in contrib/fast-import/) used to create
|
|
||||||
phony files at the top-level of the repository when the archive
|
|
||||||
contains global PAX headers, which made its own logic to detect and
|
|
||||||
omit the common leading directory ineffective, which has been
|
|
||||||
corrected.
|
|
||||||
(merge c839fcff65 js/import-tars-do-not-make-phony-files-from-pax-headers later to maint).
|
|
||||||
|
|
||||||
* Simplify the commit ancestry connectedness check in a partial clone
|
|
||||||
repository in which "promised" objects are assumed to be obtainable
|
|
||||||
lazily on-demand from promisor remote repositories.
|
|
||||||
(merge 2b98478c6f jt/connectivity-check-optim-in-partial-clone later to maint).
|
|
||||||
|
|
||||||
* The server-end of the v2 protocol to serve "git clone" and "git
|
|
||||||
fetch" was not prepared to see a delim packets at unexpected
|
|
||||||
places, which led to a crash.
|
|
||||||
(merge cacae4329f jk/harden-protocol-v2-delim-handling later to maint).
|
|
||||||
|
|
||||||
* When fed a midx that records no objects, some codepaths tried to
|
|
||||||
loop from 0 through (num_objects-1), which, due to integer
|
|
||||||
arithmetic wrapping around, made it nonsense operation with out of
|
|
||||||
bounds array accesses. The code has been corrected to reject such
|
|
||||||
an midx file.
|
|
||||||
(merge 796d61cdc0 dr/midx-avoid-int-underflow later to maint).
|
|
||||||
|
|
||||||
* Utitiles run via the run_command() API were not spawned correctly
|
|
||||||
on Cygwin, when the paths to them are given as a full path with
|
|
||||||
backslashes.
|
|
||||||
(merge 05ac8582bc ak/run-command-on-cygwin-fix later to maint).
|
|
||||||
|
|
||||||
* "git pull --rebase" tried to run a rebase even after noticing that
|
|
||||||
the pull results in a fast-forward and no rebase is needed nor
|
|
||||||
sensible, for the past few years due to a mistake nobody noticed.
|
|
||||||
(merge fbae70ddc6 en/pull-do-not-rebase-after-fast-forwarding later to maint).
|
|
||||||
|
|
||||||
* "git rebase" with the merge backend did not work well when the
|
|
||||||
rebase.abbreviateCommands configuration was set.
|
|
||||||
(merge de9f1d3ef4 ag/rebase-merge-allow-ff-under-abbrev-command later to maint).
|
|
||||||
|
|
||||||
* The logic to auto-follow tags by "git clone --single-branch" was
|
|
||||||
not careful to avoid lazy-fetching unnecessary tags, which has been
|
|
||||||
corrected.
|
|
||||||
(merge 167a575e2d jk/use-quick-lookup-in-clone-for-tag-following later to maint).
|
|
||||||
|
|
||||||
* "git rebase -i" did not leave the reflog entries correctly.
|
|
||||||
(merge 1f6965f994 en/sequencer-reflog-action later to maint).
|
|
||||||
|
|
||||||
* The more aggressive updates to remote-tracking branches we had for
|
|
||||||
the past 7 years or so were not reflected in the documentation,
|
|
||||||
which has been corrected.
|
|
||||||
(merge a44088435c pb/pull-fetch-doc later to maint).
|
|
||||||
|
|
||||||
* We've left the command line parsing of "git log :/a/b/" broken for
|
|
||||||
about a full year without anybody noticing, which has been
|
|
||||||
corrected.
|
|
||||||
(merge 0220461071 jc/missing-ref-store-fix later to maint).
|
|
||||||
|
|
||||||
* Misc fixes for Windows.
|
|
||||||
(merge 3efc128cd5 js/mingw-fixes later to maint).
|
|
||||||
|
|
||||||
* "git rebase" (again) learns to honor "--no-keep-empty", which lets
|
|
||||||
the user to discard commits that are empty from the beginning (as
|
|
||||||
opposed to the ones that become empty because of rebasing). The
|
|
||||||
interactive rebase also marks commits that are empty in the todo.
|
|
||||||
(merge 50ed76148a en/rebase-no-keep-empty later to maint).
|
|
||||||
|
|
||||||
* Parsing the host part out of URL for the credential helper has been corrected.
|
|
||||||
(merge 4c5971e18a jk/credential-parsing-end-of-host-in-URL later to maint).
|
|
||||||
|
|
||||||
* Document the recommended way to abort a failing test early (e.g. by
|
|
||||||
exiting a loop), which is to say "return 1".
|
|
||||||
(merge 7cc112dc95 jc/doc-test-leaving-early later to maint).
|
|
||||||
|
|
||||||
* The code that refreshes the last access and modified time of
|
|
||||||
on-disk packfiles and loose object files have been updated.
|
|
||||||
(merge 312cd76130 lr/freshen-file-fix later to maint).
|
|
||||||
|
|
||||||
* Validation of push certificate has been made more robust against
|
|
||||||
timing attacks.
|
|
||||||
(merge 719483e547 bc/constant-memequal later to maint).
|
|
||||||
|
|
||||||
* The custom hash function used by "git fast-import" has been
|
|
||||||
replaced with the one from hashmap.c, which gave us a nice
|
|
||||||
performance boost.
|
|
||||||
(merge d8410a816b jk/fast-import-use-hashmap later to maint).
|
|
||||||
|
|
||||||
* The "git submodule" command did not initialize a few variables it
|
|
||||||
internally uses and was affected by variable settings leaked from
|
|
||||||
the environment.
|
|
||||||
(merge 65d100c4dd lx/submodule-clear-variables later to maint).
|
|
||||||
|
|
||||||
* Raise the minimum required version of docbook-xsl package to 1.74,
|
|
||||||
as 1.74.0 was from late 2008, which is more than 10 years old, and
|
|
||||||
drop compatibility cruft from our documentation suite.
|
|
||||||
(merge 3c255ad660 ma/doc-discard-docbook-xsl-1.73 later to maint).
|
|
||||||
|
|
||||||
* "git log" learns "--[no-]mailmap" as a synonym to "--[no-]use-mailmap"
|
|
||||||
(merge 88acccda38 jc/log-no-mailmap later to maint).
|
|
||||||
|
|
||||||
* "git commit-graph write --expire-time=<timestamp>" did not use the
|
|
||||||
given timestamp correctly, which has been corrected.
|
|
||||||
(merge b09b785c78 ds/commit-graph-expiry-fix later to maint).
|
|
||||||
|
|
||||||
* Tests update to use "test-chmtime" instead of "touch -t".
|
|
||||||
(merge e892a56845 ds/t5319-touch-fix later to maint).
|
|
||||||
|
|
||||||
* "git diff" in a partial clone learned to avoid lazy loading blob
|
|
||||||
objects in more casese when they are not needed.
|
|
||||||
(merge 95acf11a3d jt/avoid-prefetch-when-able-in-diff later to maint).
|
|
||||||
|
|
||||||
* "git push --atomic" used to show failures for refs that weren't
|
|
||||||
even pushed, which has been corrected.
|
|
||||||
(merge dfe1b7f19c jx/atomic-push later to maint).
|
|
||||||
|
|
||||||
* Code in builtin/*, i.e. those can only be called from within
|
|
||||||
built-in subcommands, that implements bulk of a couple of
|
|
||||||
subcommands have been moved to libgit.a so that they could be used
|
|
||||||
by others.
|
|
||||||
(merge 9460fd48b5 dl/libify-a-few later to maint).
|
|
||||||
|
|
||||||
* Allowing the user to split a patch hunk while "git stash -p" does
|
|
||||||
not work well; a band-aid has been added to make this (partially)
|
|
||||||
work better.
|
|
||||||
|
|
||||||
* "git diff-tree --pretty --notes" used to hit an assertion failure,
|
|
||||||
as it forgot to initialize the notes subsystem.
|
|
||||||
(merge 5778b22b3d tb/diff-tree-with-notes later to maint).
|
|
||||||
|
|
||||||
* "git range-diff" fixes.
|
|
||||||
(merge 8d1675eb7f vd/range-diff-with-custom-pretty-format-fix later to maint).
|
|
||||||
|
|
||||||
* "git grep" did not quote a path with unusual character like other
|
|
||||||
commands (like "git diff", "git status") do, but did quote when run
|
|
||||||
from a subdirectory, both of which has been corrected.
|
|
||||||
(merge 45115d8490 mt/grep-cquote-path later to maint).
|
|
||||||
|
|
||||||
* GNU/Hurd is also among the ones that need the fopen() wrapper.
|
|
||||||
(merge 274a1328fb jc/gnu-hurd-lets-fread-read-dirs later to maint).
|
|
||||||
|
|
||||||
* Those fetching over protocol v2 from linux-next and other kernel
|
|
||||||
repositories are reporting that v2 often fetches way too much than
|
|
||||||
needed.
|
|
||||||
(merge 11c7f2a30b jn/demote-proto2-from-default later to maint).
|
|
||||||
|
|
||||||
* The upload-pack protocol v2 gave up too early before finding a
|
|
||||||
common ancestor, resulting in a wasteful fetch from a fork of a
|
|
||||||
project. This has been corrected to match the behaviour of v0
|
|
||||||
protocol.
|
|
||||||
(merge 2f0a093dd6 jt/v2-fetch-nego-fix later to maint).
|
|
||||||
|
|
||||||
* The build procedure did not use the libcurl library and its include
|
|
||||||
files correctly for a custom-built installation.
|
|
||||||
(merge 0573831950 jk/build-with-right-curl later to maint).
|
|
||||||
|
|
||||||
* Tighten "git mailinfo" to notice and error out when decoded result
|
|
||||||
contains NUL in it.
|
|
||||||
(merge 3919997447 dd/mailinfo-with-nul later to maint).
|
|
||||||
|
|
||||||
* Fix in-core inconsistency after fetching into a shallow repository
|
|
||||||
that broke the code to write out commit-graph.
|
|
||||||
(merge 37b9dcabfc tb/reset-shallow later to maint).
|
|
||||||
|
|
||||||
* The commit-graph code exhausted file descriptors easily when it
|
|
||||||
does not have to.
|
|
||||||
(merge c8828530b7 tb/commit-graph-fd-exhaustion-fix later to maint).
|
|
||||||
|
|
||||||
* The multi-pack-index left mmapped file descriptors open when it
|
|
||||||
does not have to.
|
|
||||||
(merge 6c7ff7cf7f ds/multi-pack-index later to maint).
|
|
||||||
|
|
||||||
* Recent update to Homebrew used by macOS folks breaks build by
|
|
||||||
moving gettext library and necessary headers.
|
|
||||||
(merge a0b3108618 ds/build-homebrew-gettext-fix later to maint).
|
|
||||||
|
|
||||||
* Incompatible options "--root" and "--fork-point" of "git rebase"
|
|
||||||
have been marked and documented as being incompatible.
|
|
||||||
(merge a35413c378 en/rebase-root-and-fork-point-are-incompatible later to maint).
|
|
||||||
|
|
||||||
* Error and verbose trace messages from "git push" did not redact
|
|
||||||
credential material embedded in URLs.
|
|
||||||
(merge d192fa5006 js/anonymise-push-url-in-errors later to maint).
|
|
||||||
|
|
||||||
* Update the parser used for credential.<URL>.<variable>
|
|
||||||
configuration, to handle <URL>s with '/' in them correctly.
|
|
||||||
(merge b44d0118ac bc/wildcard-credential later to maint).
|
|
||||||
|
|
||||||
* Recent updates broke parsing of "credential.<url>.<key>" where
|
|
||||||
<url> is not a full URL (e.g. [credential "https://"] helper = ...)
|
|
||||||
stopped working, which has been corrected.
|
|
||||||
(merge 9a121b0d22 js/partial-urlmatch-2.17 later to maint).
|
|
||||||
(merge cd93e6c029 js/partial-urlmatch later to maint).
|
|
||||||
|
|
||||||
* Some of the files commit-graph subsystem keeps on disk did not
|
|
||||||
correctly honor the core.sharedRepository settings and some were
|
|
||||||
left read-write.
|
|
||||||
|
|
||||||
* In error messages that "git switch" mentions its option to create a
|
|
||||||
new branch, "-b/-B" options were shown, where "-c/-C" options
|
|
||||||
should be, which has been corrected.
|
|
||||||
(merge 7c16ef7577 dl/switch-c-option-in-error-message later to maint).
|
|
||||||
|
|
||||||
* With the recent tightening of the code that is used to parse
|
|
||||||
various parts of a URL for use in the credential subsystem, a
|
|
||||||
hand-edited credential-store file causes the credential helper to
|
|
||||||
die, which is a bit too harsh to the users. Demote the error
|
|
||||||
behaviour to just ignore and keep using well-formed lines instead.
|
|
||||||
(merge c03859a665 cb/credential-store-ignore-bogus-lines later to maint).
|
|
||||||
|
|
||||||
* The samples in the credential documentation has been updated to
|
|
||||||
make it clear that we depict what would appear in the .git/config
|
|
||||||
file, by adding appropriate quotes as needed..
|
|
||||||
(merge 177681a07e jk/credential-sample-update later to maint).
|
|
||||||
|
|
||||||
* "git branch" and other "for-each-ref" variants accepted multiple
|
|
||||||
--sort=<key> options in the increasing order of precedence, but it
|
|
||||||
had a few breakages around "--ignore-case" handling, and tie-breaking
|
|
||||||
with the refname, which have been fixed.
|
|
||||||
(merge 7c5045fc18 jk/for-each-ref-multi-key-sort-fix later to maint).
|
|
||||||
|
|
||||||
* The coding guideline for shell scripts instructed to refer to a
|
|
||||||
variable with dollar-sign inside arithmetic expansion to work
|
|
||||||
around a bug in old versions of dash, which is a thing of the past.
|
|
||||||
Now we are not forbidden from writing $((var+1)).
|
|
||||||
(merge 32b5fe7f0e jk/arith-expansion-coding-guidelines later to maint).
|
|
||||||
|
|
||||||
* The <stdlib.h> header on NetBSD brings in its own definition of
|
|
||||||
hmac() function (eek), which conflicts with our own and unrelated
|
|
||||||
function with the same name. Our function has been renamed to work
|
|
||||||
around the issue.
|
|
||||||
(merge 3013118eb8 cb/avoid-colliding-with-netbsd-hmac later to maint).
|
|
||||||
|
|
||||||
* The basic test did not honor $TEST_SHELL_PATH setting, which has
|
|
||||||
been corrected.
|
|
||||||
(merge 0555e4af58 cb/t0000-use-the-configured-shell later to maint).
|
|
||||||
|
|
||||||
* Minor in-code comments and documentation updates around credential
|
|
||||||
API.
|
|
||||||
(merge 1aed817f99 cb/credential-doc-fixes later to maint).
|
|
||||||
|
|
||||||
* Teach "am", "commit", "merge" and "rebase", when they are run with
|
|
||||||
the "--quiet" option, to pass "--quiet" down to "gc --auto".
|
|
||||||
(merge 7c3e9e8cfb jc/auto-gc-quiet later to maint).
|
|
||||||
|
|
||||||
* The code to skip unmerged paths in the index when sparse checkout
|
|
||||||
is in use would have made out-of-bound access of the in-core index
|
|
||||||
when the last path was unmerged, which has been corrected.
|
|
||||||
|
|
||||||
* Serving a "git fetch" client over "git://" and "ssh://" protocols
|
|
||||||
using the on-wire protocol version 2 was buggy on the server end
|
|
||||||
when the client needs to make a follow-up request to
|
|
||||||
e.g. auto-follow tags.
|
|
||||||
(merge 08450ef791 cc/upload-pack-v2-fetch-fix later to maint).
|
|
||||||
|
|
||||||
* "git bisect replay" had trouble with input files when they used
|
|
||||||
CRLF line ending, which has been corrected.
|
|
||||||
(merge 6c722cbe5a cw/bisect-replay-with-dos later to maint).
|
|
||||||
|
|
||||||
* "rebase -i" segfaulted when rearranging a sequence that has a
|
|
||||||
fix-up that applies another fix-up (which may or may not be a
|
|
||||||
fix-up of yet another step).
|
|
||||||
(merge 02471e7e20 js/rebase-autosquash-double-fixup-fix later to maint).
|
|
||||||
|
|
||||||
* "git fsck" ensures that the paths recorded in tree objects are
|
|
||||||
sorted and without duplicates, but it failed to notice a case where
|
|
||||||
a blob is followed by entries that sort before a tree with the same
|
|
||||||
name. This has been corrected.
|
|
||||||
(merge 9068cfb20f rs/fsck-duplicate-names-in-trees later to maint).
|
|
||||||
|
|
||||||
* Code clean-up by removing a compatibility implementation of a
|
|
||||||
function we no longer use.
|
|
||||||
(merge 84b0115f0d cb/no-more-gmtime later to maint).
|
|
||||||
|
|
||||||
* When a binary file gets modified and renamed on both sides of history
|
|
||||||
to different locations, both files would be written to the working
|
|
||||||
tree but both would have the contents from "ours". This has been
|
|
||||||
corrected so that the path from each side gets their original content.
|
|
||||||
|
|
||||||
* Fix for a copy-and-paste error introduced during 2.20 era.
|
|
||||||
(merge e68a5272b1 ds/multi-pack-verify later to maint).
|
|
||||||
|
|
||||||
* Update an unconditional use of "grep -a" with a perl script in a test.
|
|
||||||
(merge 1eb7371236 dd/t5703-grep-a-fix later to maint).
|
|
||||||
|
|
||||||
* Other code cleanup, docfix, build fix, etc.
|
|
||||||
(merge 564956f358 jc/maintain-doc later to maint).
|
|
||||||
(merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint).
|
|
||||||
(merge 9c688735f6 rs/doc-passthru-fetch-options later to maint).
|
|
||||||
(merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint).
|
|
||||||
(merge 8312aa7d74 jc/config-tar later to maint).
|
|
||||||
(merge d00a5bdd50 ss/submodule-foreach-cb later to maint).
|
|
||||||
(merge 64d1022e14 ar/test-style-fixes later to maint).
|
|
||||||
(merge 4a465443a6 ds/doc-clone-filter later to maint).
|
|
||||||
(merge bb2dbe301b jk/t3419-drop-expensive-tests later to maint).
|
|
||||||
(merge d3507cc712 js/test-junit-finalization-fix later to maint).
|
|
||||||
(merge 2149b6748f bc/faq later to maint).
|
|
||||||
(merge 12dc0879f1 jk/test-cleanup later to maint).
|
|
||||||
(merge 344420bf0f pb/rebase-doc-typofix later to maint).
|
|
||||||
(merge 7cd54d37dc dl/wrapper-fix-indentation later to maint).
|
|
||||||
(merge 78725ebda9 jc/allow-strlen-substitution-in-shell-scripts later to maint).
|
|
||||||
(merge 2ecfcdecc6 jm/gitweb-fastcgi-utf8 later to maint).
|
|
||||||
(merge 0740d0a5d3 jk/oid-array-cleanups later to maint).
|
|
||||||
(merge a1aba0c95c js/t0007-typofix later to maint).
|
|
||||||
(merge 76ba7fa225 ma/config-doc-fix later to maint).
|
|
||||||
(merge 826f0c0df2 js/subtree-doc-update-to-asciidoctor-2 later to maint).
|
|
||||||
(merge 88eaf361e0 eb/mboxrd-doc later to maint).
|
|
||||||
(merge 051cc54941 tm/zsh-complete-switch-restore later to maint).
|
|
||||||
(merge 39102cf4fe ms/doc-revision-illustration-fix later to maint).
|
|
||||||
(merge 4d9378bfad eb/gitweb-more-trailers later to maint).
|
|
||||||
(merge bdccbf7047 mt/doc-worktree-ref later to maint).
|
|
||||||
(merge ce9baf234f dl/push-recurse-submodules-fix later to maint).
|
|
||||||
(merge 4153274052 bc/doc-credential-helper-value later to maint).
|
|
||||||
(merge 5c7bb0146e jc/codingstyle-compare-with-null later to maint).
|
|
@ -1,243 +0,0 @@
|
|||||||
Git 2.28 Release Notes
|
|
||||||
======================
|
|
||||||
|
|
||||||
Updates since v2.27
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Backward compatibility notes
|
|
||||||
|
|
||||||
* "fetch.writeCommitGraph" is deemed to be still a bit too risky and
|
|
||||||
is no longer part of the "feature.experimental" set.
|
|
||||||
|
|
||||||
* It used to be that setting extensions.* configuration variables
|
|
||||||
alone, while leaving core.repositoryFormatVersion=0, made these
|
|
||||||
settings effective, which was a wrong thing to do. In version 0,
|
|
||||||
there was no special meaning in extensions.* configuration
|
|
||||||
variables. This has been corrected. If you need these repository
|
|
||||||
extensions to be effective, the core.repositoryFormatVersion
|
|
||||||
variable needs to be updated to 1 after vetting these extensions.*
|
|
||||||
variables are set correctly.
|
|
||||||
|
|
||||||
|
|
||||||
UI, Workflows & Features
|
|
||||||
|
|
||||||
* The commands in the "diff" family learned to honor "diff.relative"
|
|
||||||
configuration variable.
|
|
||||||
|
|
||||||
* The check in "git fsck" to ensure that the tree objects are sorted
|
|
||||||
still had corner cases it missed unsorted entries.
|
|
||||||
|
|
||||||
* The interface to redact sensitive information in the trace output
|
|
||||||
has been simplified.
|
|
||||||
|
|
||||||
* The command line completion (in contrib/) learned to complete
|
|
||||||
options that the "git switch" command takes.
|
|
||||||
|
|
||||||
* "git diff" used to take arguments in random and nonsense range
|
|
||||||
notation, e.g. "git diff A..B C", "git diff A..B C...D", etc.,
|
|
||||||
which has been cleaned up.
|
|
||||||
|
|
||||||
* "git diff-files" has been taught to say paths that are marked as
|
|
||||||
intent-to-add are new files, not modified from an empty blob.
|
|
||||||
|
|
||||||
* "git status" learned to report the status of sparse checkout.
|
|
||||||
|
|
||||||
* "git difftool" has trouble dealing with paths added to the index
|
|
||||||
with the intent-to-add bit.
|
|
||||||
|
|
||||||
* "git fast-export --anonymize" learned to take customized mapping to
|
|
||||||
allow its users to tweak its output more usable for debugging.
|
|
||||||
|
|
||||||
* The command line completion support (in contrib/) used to be
|
|
||||||
prepared to work with "set -u" but recent changes got a bit more
|
|
||||||
sloppy. This has been corrected.
|
|
||||||
|
|
||||||
|
|
||||||
Performance, Internal Implementation, Development Support etc.
|
|
||||||
|
|
||||||
* Code optimization for a common case.
|
|
||||||
(merge 8777616e4d an/merge-single-strategy-optim later to maint).
|
|
||||||
|
|
||||||
* We've adopted a convention that any on-stack structure can be
|
|
||||||
initialized to have zero values in all fields with "= { 0 }",
|
|
||||||
even when the first field happens to be a pointer, but sparse
|
|
||||||
complained that a null pointer should be spelled NULL for a long
|
|
||||||
time. Start using -Wno-universal-initializer option to squelch
|
|
||||||
it (the latest sparse has it on by default).
|
|
||||||
|
|
||||||
* "git log -L..." now takes advantage of the "which paths are touched
|
|
||||||
by this commit?" info stored in the commit-graph system.
|
|
||||||
|
|
||||||
* As FreeBSD is not the only platform whose regexp library reports
|
|
||||||
a REG_ILLSEQ error when fed invalid UTF-8, add logic to detect that
|
|
||||||
automatically and skip the affected tests.
|
|
||||||
|
|
||||||
* "git bugreport" learns to report what shell is in use.
|
|
||||||
|
|
||||||
* Support for GIT_CURL_VERBOSE has been rewritten in terms of
|
|
||||||
GIT_TRACE_CURL.
|
|
||||||
|
|
||||||
* Preliminary clean-ups around refs API, plus file format
|
|
||||||
specification documentation for the reftable backend.
|
|
||||||
|
|
||||||
* Workaround breakage in MSVC build, where "curl-config --cflags"
|
|
||||||
gives settings appropriate for GCC build.
|
|
||||||
|
|
||||||
* Code clean-up of "git clean" resulted in a fix of recent
|
|
||||||
performance regression.
|
|
||||||
|
|
||||||
* Code clean-up in the codepath that serves "git fetch" continues.
|
|
||||||
|
|
||||||
* "git merge-base --is-ancestor" is taught to take advantage of the
|
|
||||||
commit graph.
|
|
||||||
|
|
||||||
* Rewrite of parts of the scripted "git submodule" Porcelain command
|
|
||||||
continues; this time it is "git submodule set-branch" subcommand's
|
|
||||||
turn.
|
|
||||||
|
|
||||||
* The "fetch/clone" protocol has been updated to allow the server to
|
|
||||||
instruct the clients to grab pre-packaged packfile(s) in addition
|
|
||||||
to the packed object data coming over the wire.
|
|
||||||
|
|
||||||
* A misdesigned strbuf_write_fd() function has been retired.
|
|
||||||
|
|
||||||
* SHA-256 migration work continues, including CVS/SVN interface.
|
|
||||||
|
|
||||||
* A few fields in "struct commit" that do not have to always be
|
|
||||||
present have been moved to commit slabs.
|
|
||||||
|
|
||||||
* API cleanup for get_worktrees()
|
|
||||||
|
|
||||||
* By renumbering object flag bits, "struct object" managed to lose
|
|
||||||
bloated inter-field padding.
|
|
||||||
|
|
||||||
* The name of the primary branch in existing repositories, and the
|
|
||||||
default name used for the first branch in newly created
|
|
||||||
repositories, is made configurable, so that we can eventually wean
|
|
||||||
ourselves off of the hardcoded 'master'.
|
|
||||||
|
|
||||||
* The effort to avoid using test_must_fail on non-git command continues.
|
|
||||||
|
|
||||||
* In 2.28-rc0, we corrected a bug that some repository extensions are
|
|
||||||
honored by mistake even in a version 0 repositories (these
|
|
||||||
configuration variables in extensions.* namespace were supposed to
|
|
||||||
have special meaning in repositories whose version numbers are 1 or
|
|
||||||
higher), but this was a bit too big a change. The behaviour in
|
|
||||||
recent versions of Git where certaion extensions.* were honored by
|
|
||||||
mistake even in version 0 repositories has been restored.
|
|
||||||
|
|
||||||
|
|
||||||
Fixes since v2.27
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
* The "--prepare-p4-only" option of "git p4" is supposed to stop
|
|
||||||
after replaying one changeset, but kept going (by mistake?)
|
|
||||||
|
|
||||||
* The error message from "git checkout -b foo -t bar baz" was
|
|
||||||
confusing.
|
|
||||||
|
|
||||||
* Some repositories in the wild have commits that record nonsense
|
|
||||||
committer timezone (e.g. rails.git); "git fast-import" learned an
|
|
||||||
option to pass these nonsense timestamps intact to allow recreating
|
|
||||||
existing repositories as-is.
|
|
||||||
(merge d42a2fb72f en/fast-import-looser-date later to maint).
|
|
||||||
|
|
||||||
* The command line completion script (in contrib/) tried to complete
|
|
||||||
"git stash -p" as if it were "git stash push -p", but it was too
|
|
||||||
aggressive and also affected "git stash show -p", which has been
|
|
||||||
corrected.
|
|
||||||
(merge fffd0cf520 vs/complete-stash-show-p-fix later to maint).
|
|
||||||
|
|
||||||
* On-the-wire protocol v2 easily falls into a deadlock between the
|
|
||||||
remote-curl helper and the fetch-pack process when the server side
|
|
||||||
prematurely throws an error and disconnects. The communication has
|
|
||||||
been updated to make it more robust.
|
|
||||||
|
|
||||||
* "git checkout -p" did not handle a newly added path at all.
|
|
||||||
(merge 2c8bd8471a js/checkout-p-new-file later to maint).
|
|
||||||
|
|
||||||
* The code to parse "git bisect start" command line was lax in
|
|
||||||
validating the arguments.
|
|
||||||
(merge 4d9005ff5d cb/bisect-helper-parser-fix later to maint).
|
|
||||||
|
|
||||||
* Reduce memory usage during "diff --quiet" in a worktree with too
|
|
||||||
many stat-unmatched paths.
|
|
||||||
(merge d2d7fbe129 jk/diff-memuse-optim-with-stat-unmatch later to maint).
|
|
||||||
|
|
||||||
* The reflog entries for "git clone" and "git fetch" did not
|
|
||||||
anonymize the URL they operated on.
|
|
||||||
(merge 46da295a77 js/reflog-anonymize-for-clone-and-fetch later to maint).
|
|
||||||
|
|
||||||
* The behaviour of "sparse-checkout" in the state "git clone
|
|
||||||
--no-checkout" left was changed accidentally in 2.27, which has
|
|
||||||
been corrected.
|
|
||||||
|
|
||||||
* Use of negative pathspec, while collecting paths including
|
|
||||||
untracked ones in the working tree, was broken.
|
|
||||||
|
|
||||||
* The same worktree directory must be registered only once, but
|
|
||||||
"git worktree move" allowed this invariant to be violated, which
|
|
||||||
has been corrected.
|
|
||||||
(merge 810382ed37 es/worktree-duplicate-paths later to maint).
|
|
||||||
|
|
||||||
* The effect of sparse checkout settings on submodules is documented.
|
|
||||||
(merge e7d7c73249 en/sparse-with-submodule-doc later to maint).
|
|
||||||
|
|
||||||
* Code clean-up around "git branch" with a minor bugfix.
|
|
||||||
(merge dc44639904 dl/branch-cleanup later to maint).
|
|
||||||
|
|
||||||
* A branch name used in a test has been clarified to match what is
|
|
||||||
going on.
|
|
||||||
(merge 08dc26061f pb/t4014-unslave later to maint).
|
|
||||||
|
|
||||||
* An in-code comment in "git diff" has been updated.
|
|
||||||
(merge c592fd4c83 dl/diff-usage-comment-update later to maint).
|
|
||||||
|
|
||||||
* The documentation and some tests have been adjusted for the recent
|
|
||||||
renaming of "pu" branch to "seen".
|
|
||||||
(merge 6dca5dbf93 js/pu-to-seen later to maint).
|
|
||||||
|
|
||||||
* The code to push changes over "dumb" HTTP had a bad interaction
|
|
||||||
with the commit reachability code due to incorrect allocation of
|
|
||||||
object flag bits, which has been corrected.
|
|
||||||
(merge 64472d15e9 bc/http-push-flagsfix later to maint).
|
|
||||||
|
|
||||||
* "git send-email --in-reply-to=<msg>" did not use the In-Reply-To:
|
|
||||||
header with the value given from the command line, and let it be
|
|
||||||
overridden by the value on In-Reply-To: header in the messages
|
|
||||||
being sent out (if exists).
|
|
||||||
(merge f9f60d7066 ra/send-email-in-reply-to-from-command-line-wins later to maint).
|
|
||||||
|
|
||||||
* "git log -Lx,y:path --before=date" lost track of where the range
|
|
||||||
should be because it didn't take the changes made by the youngest
|
|
||||||
commits that are omitted from the output into account.
|
|
||||||
|
|
||||||
* When "fetch.writeCommitGraph" configuration is set in a shallow
|
|
||||||
repository and a fetch moves the shallow boundary, we wrote out
|
|
||||||
broken commit-graph files that do not match the reality, which has
|
|
||||||
been corrected.
|
|
||||||
|
|
||||||
* "git checkout" failed to catch an error from fstat() after updating
|
|
||||||
a path in the working tree.
|
|
||||||
(merge 35e6e212fd mt/entry-fstat-fallback-fix later to maint).
|
|
||||||
|
|
||||||
* When an aliased command, whose output is piped to a pager by git,
|
|
||||||
gets killed by a signal, the pager got into a funny state, which
|
|
||||||
has been corrected (again).
|
|
||||||
(merge c0d73a59c9 ta/wait-on-aliased-commands-upon-signal later to maint).
|
|
||||||
|
|
||||||
* The code to produce progress output from "git commit-graph --write"
|
|
||||||
had a few breakages, which have been fixed.
|
|
||||||
|
|
||||||
* Other code cleanup, docfix, build fix, etc.
|
|
||||||
(merge 2c31a7aa44 jx/pkt-line-doc-count-fix later to maint).
|
|
||||||
(merge d63ae31962 cb/t5608-cleanup later to maint).
|
|
||||||
(merge 788db145c7 dl/t-readme-spell-git-correctly later to maint).
|
|
||||||
(merge 45a87a83bb dl/python-2.7-is-the-floor-version later to maint).
|
|
||||||
(merge b75a219904 es/advertise-contribution-doc later to maint).
|
|
||||||
(merge 0c9a4f638a rs/pull-leakfix later to maint).
|
|
||||||
(merge d546fe2874 rs/commit-reach-leakfix later to maint).
|
|
||||||
(merge 087bf5409c mk/pb-pretty-email-without-domain-part-fix later to maint).
|
|
||||||
(merge 5f4ee57ad9 es/worktree-code-cleanup later to maint).
|
|
||||||
(merge 0172f7834a cc/cat-file-usage-update later to maint).
|
|
||||||
(merge 81de0c01cf ma/rebase-doc-typofix later to maint).
|
|
@ -3,9 +3,8 @@ Submitting Patches
|
|||||||
|
|
||||||
== Guidelines
|
== Guidelines
|
||||||
|
|
||||||
Here are some guidelines for people who want to contribute their code to this
|
Here are some guidelines for people who want to contribute their code
|
||||||
software. There is also a link:MyFirstContribution.html[step-by-step tutorial]
|
to this software.
|
||||||
available which covers many of these same guidelines.
|
|
||||||
|
|
||||||
[[base-branch]]
|
[[base-branch]]
|
||||||
=== Decide what to base your work on.
|
=== Decide what to base your work on.
|
||||||
@ -19,7 +18,7 @@ change is relevant to.
|
|||||||
base your work on the tip of the topic.
|
base your work on the tip of the topic.
|
||||||
|
|
||||||
* A new feature should be based on `master` in general. If the new
|
* A new feature should be based on `master` in general. If the new
|
||||||
feature depends on a topic that is in `seen`, but not in `master`,
|
feature depends on a topic that is in `pu`, but not in `master`,
|
||||||
base your work on the tip of that topic.
|
base your work on the tip of that topic.
|
||||||
|
|
||||||
* Corrections and enhancements to a topic not yet in `master` should
|
* Corrections and enhancements to a topic not yet in `master` should
|
||||||
@ -28,7 +27,7 @@ change is relevant to.
|
|||||||
into the series.
|
into the series.
|
||||||
|
|
||||||
* In the exceptional case that a new feature depends on several topics
|
* In the exceptional case that a new feature depends on several topics
|
||||||
not in `master`, start working on `next` or `seen` privately and send
|
not in `master`, start working on `next` or `pu` privately and send
|
||||||
out patches for discussion. Before the final merge, you may have to
|
out patches for discussion. Before the final merge, you may have to
|
||||||
wait until some of the dependent topics graduate to `master`, and
|
wait until some of the dependent topics graduate to `master`, and
|
||||||
rebase your work.
|
rebase your work.
|
||||||
@ -38,7 +37,7 @@ change is relevant to.
|
|||||||
these parts should be based on their trees.
|
these parts should be based on their trees.
|
||||||
|
|
||||||
To find the tip of a topic branch, run `git log --first-parent
|
To find the tip of a topic branch, run `git log --first-parent
|
||||||
master..seen` and look for the merge commit. The second parent of this
|
master..pu` and look for the merge commit. The second parent of this
|
||||||
commit is the tip of the topic branch.
|
commit is the tip of the topic branch.
|
||||||
|
|
||||||
[[separate-commits]]
|
[[separate-commits]]
|
||||||
@ -424,7 +423,7 @@ help you find out who they are.
|
|||||||
and cooked further and eventually graduates to `master`.
|
and cooked further and eventually graduates to `master`.
|
||||||
|
|
||||||
In any time between the (2)-(3) cycle, the maintainer may pick it up
|
In any time between the (2)-(3) cycle, the maintainer may pick it up
|
||||||
from the list and queue it to `seen`, in order to make it easier for
|
from the list and queue it to `pu`, in order to make it easier for
|
||||||
people play with it without having to pick up and apply the patch to
|
people play with it without having to pick up and apply the patch to
|
||||||
their trees themselves.
|
their trees themselves.
|
||||||
|
|
||||||
@ -435,7 +434,7 @@ their trees themselves.
|
|||||||
master. `git pull --rebase` will automatically skip already-applied
|
master. `git pull --rebase` will automatically skip already-applied
|
||||||
patches, and will let you know. This works only if you rebase on top
|
patches, and will let you know. This works only if you rebase on top
|
||||||
of the branch in which your patch has been merged (i.e. it will not
|
of the branch in which your patch has been merged (i.e. it will not
|
||||||
tell you if your patch is merged in `seen` if you rebase on top of
|
tell you if your patch is merged in pu if you rebase on top of
|
||||||
master).
|
master).
|
||||||
|
|
||||||
* Read the Git mailing list, the maintainer regularly posts messages
|
* Read the Git mailing list, the maintainer regularly posts messages
|
||||||
|
@ -31,6 +31,24 @@ ifdef::backend-docbook[]
|
|||||||
endif::backend-docbook[]
|
endif::backend-docbook[]
|
||||||
|
|
||||||
ifdef::backend-docbook[]
|
ifdef::backend-docbook[]
|
||||||
|
ifndef::git-asciidoc-no-roff[]
|
||||||
|
# "unbreak" docbook-xsl v1.68 for manpages. v1.69 works with or without this.
|
||||||
|
# v1.72 breaks with this because it replaces dots not in roff requests.
|
||||||
|
[listingblock]
|
||||||
|
<example><title>{title}</title>
|
||||||
|
<literallayout class="monospaced">
|
||||||
|
ifdef::doctype-manpage[]
|
||||||
|
.ft C
|
||||||
|
endif::doctype-manpage[]
|
||||||
|
|
|
||||||
|
ifdef::doctype-manpage[]
|
||||||
|
.ft
|
||||||
|
endif::doctype-manpage[]
|
||||||
|
</literallayout>
|
||||||
|
{title#}</example>
|
||||||
|
endif::git-asciidoc-no-roff[]
|
||||||
|
|
||||||
|
ifdef::git-asciidoc-no-roff[]
|
||||||
ifdef::doctype-manpage[]
|
ifdef::doctype-manpage[]
|
||||||
# The following two small workarounds insert a simple paragraph after screen
|
# The following two small workarounds insert a simple paragraph after screen
|
||||||
[listingblock]
|
[listingblock]
|
||||||
@ -49,6 +67,7 @@ ifdef::doctype-manpage[]
|
|||||||
{title#}</para></formalpara>
|
{title#}</para></formalpara>
|
||||||
{title%}<simpara></simpara>
|
{title%}<simpara></simpara>
|
||||||
endif::doctype-manpage[]
|
endif::doctype-manpage[]
|
||||||
|
endif::git-asciidoc-no-roff[]
|
||||||
endif::backend-docbook[]
|
endif::backend-docbook[]
|
||||||
|
|
||||||
ifdef::doctype-manpage[]
|
ifdef::doctype-manpage[]
|
||||||
|
@ -3,12 +3,11 @@ CONFIGURATION FILE
|
|||||||
|
|
||||||
The Git configuration file contains a number of variables that affect
|
The Git configuration file contains a number of variables that affect
|
||||||
the Git commands' behavior. The files `.git/config` and optionally
|
the Git commands' behavior. The files `.git/config` and optionally
|
||||||
`config.worktree` (see the "CONFIGURATION FILE" section of
|
`config.worktree` (see `extensions.worktreeConfig` below) in each
|
||||||
linkgit:git-worktree[1]) in each repository are used to store the
|
repository are used to store the configuration for that repository, and
|
||||||
configuration for that repository, and `$HOME/.gitconfig` is used to
|
`$HOME/.gitconfig` is used to store a per-user configuration as
|
||||||
store a per-user configuration as fallback values for the `.git/config`
|
fallback values for the `.git/config` file. The file `/etc/gitconfig`
|
||||||
file. The file `/etc/gitconfig` can be used to store a system-wide
|
can be used to store a system-wide default configuration.
|
||||||
default configuration.
|
|
||||||
|
|
||||||
The configuration variables are used by both the Git plumbing
|
The configuration variables are used by both the Git plumbing
|
||||||
and the porcelains. The variables are divided into sections, wherein
|
and the porcelains. The variables are divided into sections, wherein
|
||||||
@ -221,13 +220,13 @@ Example
|
|||||||
; affected by the condition
|
; affected by the condition
|
||||||
[includeIf "gitdir:/path/to/group/"]
|
[includeIf "gitdir:/path/to/group/"]
|
||||||
path = foo.inc
|
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
|
|
||||||
----
|
----
|
||||||
|
|
||||||
|
; include only if we are in a worktree where foo-branch is
|
||||||
|
; currently checked out
|
||||||
|
[includeIf "onbranch:foo-branch"]
|
||||||
|
path = foo.inc
|
||||||
|
|
||||||
Values
|
Values
|
||||||
~~~~~~
|
~~~~~~
|
||||||
|
|
||||||
@ -264,9 +263,7 @@ color::
|
|||||||
+
|
+
|
||||||
The basic colors accepted are `normal`, `black`, `red`, `green`, `yellow`,
|
The basic colors accepted are `normal`, `black`, `red`, `green`, `yellow`,
|
||||||
`blue`, `magenta`, `cyan` and `white`. The first color given is the
|
`blue`, `magenta`, `cyan` and `white`. The first color given is the
|
||||||
foreground; the second is the background. All the basic colors except
|
foreground; the second is the background.
|
||||||
`normal` have a bright variant that can be speficied by prefixing the
|
|
||||||
color with `bright`, like `brightred`.
|
|
||||||
+
|
+
|
||||||
Colors may also be given as numbers between 0 and 255; these use ANSI
|
Colors may also be given as numbers between 0 and 255; these use ANSI
|
||||||
256-color mode (but note that not all terminals may support this). If
|
256-color mode (but note that not all terminals may support this). If
|
||||||
@ -448,8 +445,6 @@ include::config/submodule.txt[]
|
|||||||
|
|
||||||
include::config/tag.txt[]
|
include::config/tag.txt[]
|
||||||
|
|
||||||
include::config/tar.txt[]
|
|
||||||
|
|
||||||
include::config/trace2.txt[]
|
include::config/trace2.txt[]
|
||||||
|
|
||||||
include::config/transfer.txt[]
|
include::config/transfer.txt[]
|
||||||
|
@ -110,10 +110,4 @@ advice.*::
|
|||||||
submoduleAlternateErrorStrategyDie::
|
submoduleAlternateErrorStrategyDie::
|
||||||
Advice shown when a submodule.alternateErrorStrategy option
|
Advice shown when a submodule.alternateErrorStrategy option
|
||||||
configured to "die" causes a fatal error.
|
configured to "die" causes a fatal error.
|
||||||
addIgnoredFile::
|
|
||||||
Advice shown if a user attempts to add an ignored file to
|
|
||||||
the index.
|
|
||||||
addEmptyPathspec::
|
|
||||||
Advice shown if a user runs the add command without providing
|
|
||||||
the pathspec parameter.
|
|
||||||
--
|
--
|
||||||
|
@ -81,16 +81,15 @@ branch.<name>.rebase::
|
|||||||
"git pull" is run. See "pull.rebase" for doing this in a non
|
"git pull" is run. See "pull.rebase" for doing this in a non
|
||||||
branch-specific manner.
|
branch-specific manner.
|
||||||
+
|
+
|
||||||
When `merges` (or just 'm'), pass the `--rebase-merges` option to 'git rebase'
|
When `merges`, pass the `--rebase-merges` option to 'git rebase'
|
||||||
so that the local merge commits are included in the rebase (see
|
so that the local merge commits are included in the rebase (see
|
||||||
linkgit:git-rebase[1] for details).
|
linkgit:git-rebase[1] for details).
|
||||||
+
|
+
|
||||||
When `preserve` (or just 'p', deprecated in favor of `merges`), also pass
|
When `preserve` (deprecated in favor of `merges`), also pass
|
||||||
`--preserve-merges` along to 'git rebase' so that locally committed merge
|
`--preserve-merges` along to 'git rebase' so that locally committed merge
|
||||||
commits will not be flattened by running 'git pull'.
|
commits will not be flattened by running 'git pull'.
|
||||||
+
|
+
|
||||||
When the value is `interactive` (or just 'i'), the rebase is run in interactive
|
When the value is `interactive`, the rebase is run in interactive mode.
|
||||||
mode.
|
|
||||||
+
|
+
|
||||||
*NOTE*: this is a possibly dangerous operation; do *not* use
|
*NOTE*: this is a possibly dangerous operation; do *not* use
|
||||||
it unless you understand the implications (see linkgit:git-rebase[1]
|
it unless you understand the implications (see linkgit:git-rebase[1]
|
||||||
|
@ -68,17 +68,6 @@ core.fsmonitor::
|
|||||||
avoiding unnecessary processing of files that have not changed.
|
avoiding unnecessary processing of files that have not changed.
|
||||||
See the "fsmonitor-watchman" section of linkgit:githooks[5].
|
See the "fsmonitor-watchman" section of linkgit:githooks[5].
|
||||||
|
|
||||||
core.fsmonitorHookVersion::
|
|
||||||
Sets the version of hook that is to be used when calling fsmonitor.
|
|
||||||
There are currently versions 1 and 2. When this is not set,
|
|
||||||
version 2 will be tried first and if it fails then version 1
|
|
||||||
will be tried. Version 1 uses a timestamp as input to determine
|
|
||||||
which files have changes since that time but some monitors
|
|
||||||
like watchman have race conditions when used with a timestamp.
|
|
||||||
Version 2 uses an opaque string so that the monitor can return
|
|
||||||
something that can be used to determine what files have changed
|
|
||||||
without race conditions.
|
|
||||||
|
|
||||||
core.trustctime::
|
core.trustctime::
|
||||||
If false, the ctime differences between the index and the
|
If false, the ctime differences between the index and the
|
||||||
working tree are ignored; useful when the inode change time
|
working tree are ignored; useful when the inode change time
|
||||||
|
@ -1,13 +1,9 @@
|
|||||||
credential.helper::
|
credential.helper::
|
||||||
Specify an external helper to be called when a username or
|
Specify an external helper to be called when a username or
|
||||||
password credential is needed; the helper may consult external
|
password credential is needed; the helper may consult external
|
||||||
storage to avoid prompting the user for the credentials. This is
|
storage to avoid prompting the user for the credentials. Note
|
||||||
normally the name of a credential helper with possible
|
that multiple helpers may be defined. See linkgit:gitcredentials[7]
|
||||||
arguments, but may also be an absolute path with arguments or, if
|
for details.
|
||||||
preceded by `!`, shell commands.
|
|
||||||
+
|
|
||||||
Note that multiple helpers may be defined. See linkgit:gitcredentials[7]
|
|
||||||
for details and examples.
|
|
||||||
|
|
||||||
credential.useHttpPath::
|
credential.useHttpPath::
|
||||||
When acquiring credentials, consider the "path" component of an http
|
When acquiring credentials, consider the "path" component of an http
|
||||||
|
@ -105,10 +105,6 @@ diff.mnemonicPrefix::
|
|||||||
diff.noprefix::
|
diff.noprefix::
|
||||||
If set, 'git diff' does not show any source or destination prefix.
|
If set, 'git diff' does not show any source or destination prefix.
|
||||||
|
|
||||||
diff.relative::
|
|
||||||
If set to 'true', 'git diff' does not show changes outside of the directory
|
|
||||||
and show pathnames relative to the current directory.
|
|
||||||
|
|
||||||
diff.orderFile::
|
diff.orderFile::
|
||||||
File indicating how to order files within a diff.
|
File indicating how to order files within a diff.
|
||||||
See the '-O' option to linkgit:git-diff[1] for details.
|
See the '-O' option to linkgit:git-diff[1] for details.
|
||||||
|
@ -12,12 +12,19 @@ feature.experimental::
|
|||||||
setting if you are interested in providing feedback on experimental
|
setting if you are interested in providing feedback on experimental
|
||||||
features. The new default values are:
|
features. The new default values are:
|
||||||
+
|
+
|
||||||
|
* `pack.useSparse=true` uses a new algorithm when constructing a pack-file
|
||||||
|
which can improve `git push` performance in repos with many files.
|
||||||
|
+
|
||||||
* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
|
* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
|
||||||
skipping more commits at a time, reducing the number of round trips.
|
skipping more commits at a time, reducing the number of round trips.
|
||||||
+
|
+
|
||||||
* `protocol.version=2` speeds up fetches from repositories with many refs by
|
* `fetch.writeCommitGraph=true` writes a commit-graph after every `git fetch`
|
||||||
allowing the client to specify which refs to list before the server lists
|
command that downloads a pack-file from a remote. Using the `--split` option,
|
||||||
them.
|
most executions will create a very small commit-graph file on top of the
|
||||||
|
existing commit-graph file(s). Occasionally, these files will merge and the
|
||||||
|
write may take longer. Having an updated commit-graph file helps performance
|
||||||
|
of many Git commands, including `git merge-base`, `git push -f`, and
|
||||||
|
`git log --graph`.
|
||||||
|
|
||||||
feature.manyFiles::
|
feature.manyFiles::
|
||||||
Enable config options that optimize for repos with many files in the
|
Enable config options that optimize for repos with many files in the
|
||||||
|
@ -1,14 +1,11 @@
|
|||||||
fetch.recurseSubmodules::
|
fetch.recurseSubmodules::
|
||||||
This option controls whether `git fetch` (and the underlying fetch
|
This option can be either set to a boolean value or to 'on-demand'.
|
||||||
in `git pull`) will recursively fetch into populated submodules.
|
|
||||||
This option can be set either to a boolean value or to 'on-demand'.
|
|
||||||
Setting it to a boolean changes the behavior of fetch and pull to
|
Setting it to a boolean changes the behavior of fetch and pull to
|
||||||
recurse unconditionally into submodules when set to true or to not
|
unconditionally recurse into submodules when set to true or to not
|
||||||
recurse at all when set to false. When set to 'on-demand', fetch and
|
recurse at all when set to false. When set to 'on-demand' (the default
|
||||||
pull will only recurse into a populated submodule when its
|
value), fetch and pull will only recurse into a populated submodule
|
||||||
superproject retrieves a commit that updates the submodule's
|
when its superproject retrieves a commit that updates the submodule's
|
||||||
reference.
|
reference.
|
||||||
Defaults to 'on-demand', or to the value of 'submodule.recurse' if set.
|
|
||||||
|
|
||||||
fetch.fsckObjects::
|
fetch.fsckObjects::
|
||||||
If it is set to true, git-fetch-pack will check all fetched
|
If it is set to true, git-fetch-pack will check all fetched
|
||||||
@ -90,4 +87,5 @@ fetch.writeCommitGraph::
|
|||||||
the existing commit-graph file(s). Occasionally, these files will
|
the existing commit-graph file(s). Occasionally, these files will
|
||||||
merge and the write may take longer. Having an updated commit-graph
|
merge and the write may take longer. Having an updated commit-graph
|
||||||
file helps performance of many Git commands, including `git merge-base`,
|
file helps performance of many Git commands, including `git merge-base`,
|
||||||
`git push -f`, and `git log --graph`. Defaults to false.
|
`git push -f`, and `git log --graph`. Defaults to false, unless
|
||||||
|
`feature.experimental` is true.
|
||||||
|
@ -57,11 +57,6 @@ format.suffix::
|
|||||||
`.patch`. Use this variable to change that suffix (make sure to
|
`.patch`. Use this variable to change that suffix (make sure to
|
||||||
include the dot if you want it).
|
include the dot if you want it).
|
||||||
|
|
||||||
format.encodeEmailHeaders::
|
|
||||||
Encode email headers that have non-ASCII characters with
|
|
||||||
"Q-encoding" (described in RFC 2047) for email transmission.
|
|
||||||
Defaults to true.
|
|
||||||
|
|
||||||
format.pretty::
|
format.pretty::
|
||||||
The default pretty format for log/show/whatchanged command,
|
The default pretty format for log/show/whatchanged command,
|
||||||
See linkgit:git-log[1], linkgit:git-show[1],
|
See linkgit:git-log[1], linkgit:git-show[1],
|
||||||
|
@ -18,18 +18,3 @@ gpg.<format>.program::
|
|||||||
chose. (see `gpg.program` and `gpg.format`) `gpg.program` can still
|
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".
|
value for `gpg.x509.program` is "gpgsm".
|
||||||
|
|
||||||
gpg.minTrustLevel::
|
|
||||||
Specifies a minimum trust level for signature verification. If
|
|
||||||
this option is unset, then signature verification for merge
|
|
||||||
operations require a key with at least `marginal` trust. Other
|
|
||||||
operations that perform signature verification require a key
|
|
||||||
with at least `undefined` trust. Setting this option overrides
|
|
||||||
the required trust-level for all operations. Supported values,
|
|
||||||
in increasing order of significance:
|
|
||||||
+
|
|
||||||
* `undefined`
|
|
||||||
* `never`
|
|
||||||
* `marginal`
|
|
||||||
* `fully`
|
|
||||||
* `ultimate`
|
|
||||||
|
@ -29,27 +29,6 @@ http.proxyAuthMethod::
|
|||||||
* `ntlm` - NTLM authentication (compare the --ntlm option of `curl(1)`)
|
* `ntlm` - NTLM authentication (compare the --ntlm option of `curl(1)`)
|
||||||
--
|
--
|
||||||
|
|
||||||
http.proxySSLCert::
|
|
||||||
The pathname of a file that stores a client certificate to use to authenticate
|
|
||||||
with an HTTPS proxy. Can be overridden by the `GIT_PROXY_SSL_CERT` environment
|
|
||||||
variable.
|
|
||||||
|
|
||||||
http.proxySSLKey::
|
|
||||||
The pathname of a file that stores a private key to use to authenticate with
|
|
||||||
an HTTPS proxy. Can be overridden by the `GIT_PROXY_SSL_KEY` environment
|
|
||||||
variable.
|
|
||||||
|
|
||||||
http.proxySSLCertPasswordProtected::
|
|
||||||
Enable Git's password prompt for the proxy SSL certificate. Otherwise OpenSSL
|
|
||||||
will prompt the user, possibly many times, if the certificate or private key
|
|
||||||
is encrypted. Can be overriden by the `GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED`
|
|
||||||
environment variable.
|
|
||||||
|
|
||||||
http.proxySSLCAInfo::
|
|
||||||
Pathname to the file containing the certificate bundle that should be used to
|
|
||||||
verify the proxy with when using an HTTPS proxy. Can be overriden by the
|
|
||||||
`GIT_PROXY_SSL_CAINFO` environment variable.
|
|
||||||
|
|
||||||
http.emptyAuth::
|
http.emptyAuth::
|
||||||
Attempt authentication without seeking a username or password. This
|
Attempt authentication without seeking a username or password. This
|
||||||
can be used to attempt GSS-Negotiate authentication without specifying
|
can be used to attempt GSS-Negotiate authentication without specifying
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
init.templateDir::
|
init.templateDir::
|
||||||
Specify the directory from which templates will be copied.
|
Specify the directory from which templates will be copied.
|
||||||
(See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)
|
(See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)
|
||||||
|
|
||||||
init.defaultBranch::
|
|
||||||
Allows overriding the default branch name e.g. when initializing
|
|
||||||
a new repository or when cloning an empty repository.
|
|
||||||
|
@ -18,12 +18,6 @@ log.decorate::
|
|||||||
names are shown. This is the same as the `--decorate` option
|
names are shown. This is the same as the `--decorate` option
|
||||||
of the `git log`.
|
of the `git log`.
|
||||||
|
|
||||||
log.excludeDecoration::
|
|
||||||
Exclude the specified patterns from the log decorations. This is
|
|
||||||
similar to the `--decorate-refs-exclude` command-line option, but
|
|
||||||
the config option can be overridden by the `--decorate-refs`
|
|
||||||
option.
|
|
||||||
|
|
||||||
log.follow::
|
log.follow::
|
||||||
If `true`, `git log` will act as if the `--follow` option was used when
|
If `true`, `git log` will act as if the `--follow` option was used when
|
||||||
a single <path> is given. This has the same limitations as `--follow`,
|
a single <path> is given. This has the same limitations as `--follow`,
|
||||||
|
@ -70,16 +70,6 @@ merge.stat::
|
|||||||
Whether to print the diffstat between ORIG_HEAD and the merge result
|
Whether to print the diffstat between ORIG_HEAD and the merge result
|
||||||
at the end of the merge. True by default.
|
at the end of the merge. True by default.
|
||||||
|
|
||||||
merge.autoStash::
|
|
||||||
When set to true, automatically create a temporary stash entry
|
|
||||||
before the operation begins, and apply it after the operation
|
|
||||||
ends. This means that you can run merge on a dirty worktree.
|
|
||||||
However, use with care: the final stash application after a
|
|
||||||
successful merge might result in non-trivial conflicts.
|
|
||||||
This option can be overridden by the `--no-autostash` and
|
|
||||||
`--autostash` options of linkgit:git-merge[1].
|
|
||||||
Defaults to false.
|
|
||||||
|
|
||||||
merge.tool::
|
merge.tool::
|
||||||
Controls which merge tool is used by linkgit:git-mergetool[1].
|
Controls which merge tool is used by linkgit:git-mergetool[1].
|
||||||
The list below shows the valid built-in values.
|
The list below shows the valid built-in values.
|
||||||
|
@ -27,13 +27,6 @@ Note that changing the compression level will not automatically recompress
|
|||||||
all existing objects. You can force recompression by passing the -F option
|
all existing objects. You can force recompression by passing the -F option
|
||||||
to linkgit:git-repack[1].
|
to linkgit:git-repack[1].
|
||||||
|
|
||||||
pack.allowPackReuse::
|
|
||||||
When true, and when reachability bitmaps are enabled,
|
|
||||||
pack-objects will try to send parts of the bitmapped packfile
|
|
||||||
verbatim. This can reduce memory and CPU usage to serve fetches,
|
|
||||||
but might result in sending a slightly larger pack. Defaults to
|
|
||||||
true.
|
|
||||||
|
|
||||||
pack.island::
|
pack.island::
|
||||||
An extended regular expression configuring a set of delta
|
An extended regular expression configuring a set of delta
|
||||||
islands. See "DELTA ISLANDS" in linkgit:git-pack-objects[1]
|
islands. See "DELTA ISLANDS" in linkgit:git-pack-objects[1]
|
||||||
@ -119,8 +112,8 @@ pack.useSparse::
|
|||||||
objects. This can have significant performance benefits when
|
objects. This can have significant performance benefits when
|
||||||
computing a pack to send a small change. However, it is possible
|
computing a pack to send a small change. However, it is possible
|
||||||
that extra objects are added to the pack-file if the included
|
that extra objects are added to the pack-file if the included
|
||||||
commits contain certain types of direct renames. Default is
|
commits contain certain types of direct renames. Default is `false`
|
||||||
`true`.
|
unless `feature.experimental` is enabled.
|
||||||
|
|
||||||
pack.writeBitmaps (deprecated)::
|
pack.writeBitmaps (deprecated)::
|
||||||
This is a deprecated synonym for `repack.writeBitmaps`.
|
This is a deprecated synonym for `repack.writeBitmaps`.
|
||||||
|
@ -45,11 +45,11 @@ The protocol names currently used by git are:
|
|||||||
--
|
--
|
||||||
|
|
||||||
protocol.version::
|
protocol.version::
|
||||||
If set, clients will attempt to communicate with a server
|
Experimental. If set, clients will attempt to communicate with a
|
||||||
using the specified protocol version. If the server does
|
server using the specified protocol version. If unset, no
|
||||||
not support it, communication falls back to version 0.
|
attempt will be made by the client to communicate using a
|
||||||
If unset, the default is `0`, unless `feature.experimental`
|
particular protocol version, this results in protocol version 0
|
||||||
is enabled, in which case the default is `2`.
|
being used.
|
||||||
Supported versions:
|
Supported versions:
|
||||||
+
|
+
|
||||||
--
|
--
|
||||||
|
@ -14,16 +14,15 @@ pull.rebase::
|
|||||||
pull" is run. See "branch.<name>.rebase" for setting this on a
|
pull" is run. See "branch.<name>.rebase" for setting this on a
|
||||||
per-branch basis.
|
per-branch basis.
|
||||||
+
|
+
|
||||||
When `merges` (or just 'm'), pass the `--rebase-merges` option to 'git rebase'
|
When `merges`, pass the `--rebase-merges` option to 'git rebase'
|
||||||
so that the local merge commits are included in the rebase (see
|
so that the local merge commits are included in the rebase (see
|
||||||
linkgit:git-rebase[1] for details).
|
linkgit:git-rebase[1] for details).
|
||||||
+
|
+
|
||||||
When `preserve` (or just 'p', deprecated in favor of `merges`), also pass
|
When `preserve` (deprecated in favor of `merges`), also pass
|
||||||
`--preserve-merges` along to 'git rebase' so that locally committed merge
|
`--preserve-merges` along to 'git rebase' so that locally committed merge
|
||||||
commits will not be flattened by running 'git pull'.
|
commits will not be flattened by running 'git pull'.
|
||||||
+
|
+
|
||||||
When the value is `interactive` (or just 'i'), the rebase is run in interactive
|
When the value is `interactive`, the rebase is run in interactive mode.
|
||||||
mode.
|
|
||||||
+
|
+
|
||||||
*NOTE*: this is a possibly dangerous operation; do *not* use
|
*NOTE*: this is a possibly dangerous operation; do *not* use
|
||||||
it unless you understand the implications (see linkgit:git-rebase[1]
|
it unless you understand the implications (see linkgit:git-rebase[1]
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
push.default::
|
push.default::
|
||||||
Defines the action `git push` should take if no refspec is
|
Defines the action `git push` should take if no refspec is
|
||||||
given (whether from the command-line, config, or elsewhere).
|
explicitly given. Different values are well-suited for
|
||||||
Different values are well-suited for
|
|
||||||
specific workflows; for instance, in a purely central workflow
|
specific workflows; for instance, in a purely central workflow
|
||||||
(i.e. the fetch source is equal to the push destination),
|
(i.e. the fetch source is equal to the push destination),
|
||||||
`upstream` is probably what you want. Possible values are:
|
`upstream` is probably what you want. Possible values are:
|
||||||
@ -9,7 +8,7 @@ push.default::
|
|||||||
--
|
--
|
||||||
|
|
||||||
* `nothing` - do not push anything (error out) unless a refspec is
|
* `nothing` - do not push anything (error out) unless a refspec is
|
||||||
given. This is primarily meant for people who want to
|
explicitly given. This is primarily meant for people who want to
|
||||||
avoid mistakes by always being explicit.
|
avoid mistakes by always being explicit.
|
||||||
|
|
||||||
* `current` - push the current branch to update a branch with the same
|
* `current` - push the current branch to update a branch with the same
|
||||||
@ -112,5 +111,3 @@ push.recurseSubmodules::
|
|||||||
is 'no' then default behavior of ignoring submodules when pushing
|
is 'no' then default behavior of ignoring submodules when pushing
|
||||||
is retained. You may override this configuration at time of push by
|
is retained. You may override this configuration at time of push by
|
||||||
specifying '--recurse-submodules=check|on-demand|no'.
|
specifying '--recurse-submodules=check|on-demand|no'.
|
||||||
If not set, 'no' is used by default, unless 'submodule.recurse' is
|
|
||||||
set (in which case a 'true' value means 'on-demand').
|
|
||||||
|
@ -5,12 +5,6 @@ rebase.useBuiltin::
|
|||||||
is always used. Setting this will emit a warning, to alert any
|
is always used. Setting this will emit a warning, to alert any
|
||||||
remaining users that setting this now does nothing.
|
remaining users that setting this now does nothing.
|
||||||
|
|
||||||
rebase.backend::
|
|
||||||
Default backend to use for rebasing. Possible choices are
|
|
||||||
'apply' or 'merge'. In the future, if the merge backend gains
|
|
||||||
all remaining capabilities of the apply backend, this setting
|
|
||||||
may become unused.
|
|
||||||
|
|
||||||
rebase.stat::
|
rebase.stat::
|
||||||
Whether to show a diffstat of what changed upstream since the last
|
Whether to show a diffstat of what changed upstream since the last
|
||||||
rebase. False by default.
|
rebase. False by default.
|
||||||
|
@ -1,9 +1,17 @@
|
|||||||
stash.useBuiltin::
|
stash.useBuiltin::
|
||||||
Unused configuration variable. Used in Git versions 2.22 to
|
Set to `false` to use the legacy shell script implementation of
|
||||||
2.26 as an escape hatch to enable the legacy shellscript
|
linkgit:git-stash[1]. Is `true` by default, which means use
|
||||||
implementation of stash. Now the built-in rewrite of it in C
|
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.
|
The C rewrite is first included with Git version 2.22 (and Git for Windows
|
||||||
|
version 2.19). This option serves as 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::
|
stash.showPatch::
|
||||||
If this is set to true, the `git stash show` command without an
|
If this is set to true, the `git stash show` command without an
|
||||||
|
@ -59,17 +59,9 @@ submodule.active::
|
|||||||
|
|
||||||
submodule.recurse::
|
submodule.recurse::
|
||||||
Specifies if commands recurse into submodules by default. This
|
Specifies if commands recurse into submodules by default. This
|
||||||
applies to all commands that have a `--recurse-submodules` option
|
applies to all commands that have a `--recurse-submodules` option,
|
||||||
(`checkout`, `fetch`, `grep`, `pull`, `push`, `read-tree`, `reset`,
|
except `clone`.
|
||||||
`restore` and `switch`) except `clone` and `ls-files`.
|
|
||||||
Defaults to false.
|
Defaults to false.
|
||||||
When set to true, it can be deactivated via the
|
|
||||||
`--no-recurse-submodules` option. Note that some Git commands
|
|
||||||
lacking this option may call some of the above commands affected by
|
|
||||||
`submodule.recurse`; for instance `git remote update` will call
|
|
||||||
`git fetch` but does not have a `--no-recurse-submodules` option.
|
|
||||||
For these commands a workaround is to temporarily change the
|
|
||||||
configuration value by using `git -c submodule.recurse=0`.
|
|
||||||
|
|
||||||
submodule.fetchJobs::
|
submodule.fetchJobs::
|
||||||
Specifies how many submodules are fetched/cloned at the same time.
|
Specifies how many submodules are fetched/cloned at the same time.
|
||||||
|
@ -15,3 +15,10 @@ tag.gpgSign::
|
|||||||
convenient to use an agent to avoid typing your gpg passphrase
|
convenient to use an agent to avoid typing your gpg passphrase
|
||||||
several times. Note that this option doesn't affect tag signing
|
several times. Note that this option doesn't affect tag signing
|
||||||
behavior enabled by "-u <keyid>" or "--local-user=<keyid>" options.
|
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
|
||||||
|
world write bit. The special value "user" indicates that the
|
||||||
|
archiving user's umask will be used instead. See umask(2) and
|
||||||
|
linkgit:git-archive[1].
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
tar.umask::
|
|
||||||
This variable can be used to restrict the permission bits of
|
|
||||||
tar archive entries. The default is 0002, which turns off the
|
|
||||||
world write bit. The special value "user" indicates that the
|
|
||||||
archiving user's umask will be used instead. See umask(2) and
|
|
||||||
linkgit:git-archive[1].
|
|
@ -48,15 +48,6 @@ trace2.configParams::
|
|||||||
May be overridden by the `GIT_TRACE2_CONFIG_PARAMS` environment
|
May be overridden by the `GIT_TRACE2_CONFIG_PARAMS` environment
|
||||||
variable. Unset by default.
|
variable. Unset by default.
|
||||||
|
|
||||||
trace2.envVars::
|
|
||||||
A comma-separated list of "important" environment variables that should
|
|
||||||
be recorded in the trace2 output. For example,
|
|
||||||
`GIT_HTTP_USER_AGENT,GIT_CONFIG` would cause the trace2 output to
|
|
||||||
contain events listing the overrides for HTTP user agent and the
|
|
||||||
location of the Git configuration file (assuming any are set). May be
|
|
||||||
overriden by the `GIT_TRACE2_ENV_VARS` environment variable. Unset by
|
|
||||||
default.
|
|
||||||
|
|
||||||
trace2.destinationDebug::
|
trace2.destinationDebug::
|
||||||
Boolean. When true Git will print error messages when a
|
Boolean. When true Git will print error messages when a
|
||||||
trace target destination cannot be opened for writing.
|
trace target destination cannot be opened for writing.
|
||||||
|
@ -20,9 +20,7 @@ RFC 2822::
|
|||||||
ISO 8601::
|
ISO 8601::
|
||||||
Time and date specified by the ISO 8601 standard, for example
|
Time and date specified by the ISO 8601 standard, for example
|
||||||
`2005-04-07T22:13:13`. The parser accepts a space instead of the
|
`2005-04-07T22:13:13`. The parser accepts a space instead of the
|
||||||
`T` character as well. Fractional parts of a second will be ignored,
|
`T` character as well.
|
||||||
for example `2005-04-07T22:13:13.019` will be treated as
|
|
||||||
`2005-04-07T22:13:13`.
|
|
||||||
+
|
+
|
||||||
NOTE: In addition, the date part is accepted in the following formats:
|
NOTE: In addition, the date part is accepted in the following formats:
|
||||||
`YYYY.MM.DD`, `MM/DD/YYYY` and `DD.MM.YYYY`.
|
`YYYY.MM.DD`, `MM/DD/YYYY` and `DD.MM.YYYY`.
|
||||||
|
@ -643,18 +643,15 @@ ifndef::git-format-patch[]
|
|||||||
-R::
|
-R::
|
||||||
Swap two inputs; that is, show differences from index or
|
Swap two inputs; that is, show differences from index or
|
||||||
on-disk file to tree contents.
|
on-disk file to tree contents.
|
||||||
endif::git-format-patch[]
|
|
||||||
|
|
||||||
--relative[=<path>]::
|
--relative[=<path>]::
|
||||||
--no-relative::
|
|
||||||
When run from a subdirectory of the project, it can be
|
When run from a subdirectory of the project, it can be
|
||||||
told to exclude changes outside the directory and show
|
told to exclude changes outside the directory and show
|
||||||
pathnames relative to it with this option. When you are
|
pathnames relative to it with this option. When you are
|
||||||
not in a subdirectory (e.g. in a bare repository), you
|
not in a subdirectory (e.g. in a bare repository), you
|
||||||
can name which subdirectory to make the output relative
|
can name which subdirectory to make the output relative
|
||||||
to by giving a <path> as an argument.
|
to by giving a <path> as an argument.
|
||||||
`--no-relative` can be used to countermand both `diff.relative` config
|
endif::git-format-patch[]
|
||||||
option and previous `--relative`.
|
|
||||||
|
|
||||||
-a::
|
-a::
|
||||||
--text::
|
--text::
|
||||||
|
@ -61,8 +61,10 @@ this option multiple times, one for each matching ref name.
|
|||||||
See also the `fetch.negotiationAlgorithm` configuration variable
|
See also the `fetch.negotiationAlgorithm` configuration variable
|
||||||
documented in linkgit:git-config[1].
|
documented in linkgit:git-config[1].
|
||||||
|
|
||||||
|
ifndef::git-pull[]
|
||||||
--dry-run::
|
--dry-run::
|
||||||
Show what would be done, without making any changes.
|
Show what would be done, without making any changes.
|
||||||
|
endif::git-pull[]
|
||||||
|
|
||||||
-f::
|
-f::
|
||||||
--force::
|
--force::
|
||||||
@ -93,7 +95,6 @@ ifndef::git-pull[]
|
|||||||
--[no-]write-commit-graph::
|
--[no-]write-commit-graph::
|
||||||
Write a commit-graph after fetching. This overrides the config
|
Write a commit-graph after fetching. This overrides the config
|
||||||
setting `fetch.writeCommitGraph`.
|
setting `fetch.writeCommitGraph`.
|
||||||
endif::git-pull[]
|
|
||||||
|
|
||||||
-p::
|
-p::
|
||||||
--prune::
|
--prune::
|
||||||
@ -106,7 +107,6 @@ endif::git-pull[]
|
|||||||
was cloned with the --mirror option), then they are also
|
was cloned with the --mirror option), then they are also
|
||||||
subject to pruning. Supplying `--prune-tags` is a shorthand for
|
subject to pruning. Supplying `--prune-tags` is a shorthand for
|
||||||
providing the tag refspec.
|
providing the tag refspec.
|
||||||
ifndef::git-pull[]
|
|
||||||
+
|
+
|
||||||
See the PRUNING section below for more details.
|
See the PRUNING section below for more details.
|
||||||
|
|
||||||
@ -133,6 +133,7 @@ endif::git-pull[]
|
|||||||
behavior for a remote may be specified with the remote.<name>.tagOpt
|
behavior for a remote may be specified with the remote.<name>.tagOpt
|
||||||
setting. See linkgit:git-config[1].
|
setting. See linkgit:git-config[1].
|
||||||
|
|
||||||
|
ifndef::git-pull[]
|
||||||
--refmap=<refspec>::
|
--refmap=<refspec>::
|
||||||
When fetching refs listed on the command line, use the
|
When fetching refs listed on the command line, use the
|
||||||
specified refspec (can be given more than once) to map the
|
specified refspec (can be given more than once) to map the
|
||||||
@ -153,7 +154,6 @@ endif::git-pull[]
|
|||||||
is used (though tags may be pruned anyway if they are also the
|
is used (though tags may be pruned anyway if they are also the
|
||||||
destination of an explicit refspec; see `--prune`).
|
destination of an explicit refspec; see `--prune`).
|
||||||
|
|
||||||
ifndef::git-pull[]
|
|
||||||
--recurse-submodules[=yes|on-demand|no]::
|
--recurse-submodules[=yes|on-demand|no]::
|
||||||
This option controls if and under what conditions new commits of
|
This option controls if and under what conditions new commits of
|
||||||
populated submodules should be fetched too. It can be used as a
|
populated submodules should be fetched too. It can be used as a
|
||||||
@ -163,9 +163,7 @@ ifndef::git-pull[]
|
|||||||
value. Use 'on-demand' to only recurse into a populated submodule
|
value. Use 'on-demand' to only recurse into a populated submodule
|
||||||
when the superproject retrieves a commit that updates the submodule's
|
when the superproject retrieves a commit that updates the submodule's
|
||||||
reference to a commit that isn't already in the local submodule
|
reference to a commit that isn't already in the local submodule
|
||||||
clone. By default, 'on-demand' is used, unless
|
clone.
|
||||||
`fetch.recurseSubmodules` is set (see linkgit:git-config[1]).
|
|
||||||
endif::git-pull[]
|
|
||||||
|
|
||||||
-j::
|
-j::
|
||||||
--jobs=<n>::
|
--jobs=<n>::
|
||||||
@ -179,11 +177,9 @@ parallel. To control them independently, use the config settings
|
|||||||
Typically, parallel recursive and multi-remote fetches will be faster. By
|
Typically, parallel recursive and multi-remote fetches will be faster. By
|
||||||
default fetches are performed sequentially, not in parallel.
|
default fetches are performed sequentially, not in parallel.
|
||||||
|
|
||||||
ifndef::git-pull[]
|
|
||||||
--no-recurse-submodules::
|
--no-recurse-submodules::
|
||||||
Disable recursive fetching of submodules (this has the same effect as
|
Disable recursive fetching of submodules (this has the same effect as
|
||||||
using the `--recurse-submodules=no` option).
|
using the `--recurse-submodules=no` option).
|
||||||
endif::git-pull[]
|
|
||||||
|
|
||||||
--set-upstream::
|
--set-upstream::
|
||||||
If the remote is fetched successfully, pull and add upstream
|
If the remote is fetched successfully, pull and add upstream
|
||||||
@ -192,7 +188,6 @@ endif::git-pull[]
|
|||||||
see `branch.<name>.merge` and `branch.<name>.remote` in
|
see `branch.<name>.merge` and `branch.<name>.remote` in
|
||||||
linkgit:git-config[1].
|
linkgit:git-config[1].
|
||||||
|
|
||||||
ifndef::git-pull[]
|
|
||||||
--submodule-prefix=<path>::
|
--submodule-prefix=<path>::
|
||||||
Prepend <path> to paths printed in informative messages
|
Prepend <path> to paths printed in informative messages
|
||||||
such as "Fetching submodule foo". This option is used
|
such as "Fetching submodule foo". This option is used
|
||||||
@ -205,6 +200,7 @@ ifndef::git-pull[]
|
|||||||
recursion (such as settings in linkgit:gitmodules[5] and
|
recursion (such as settings in linkgit:gitmodules[5] and
|
||||||
linkgit:git-config[1]) override this option, as does
|
linkgit:git-config[1]) override this option, as does
|
||||||
specifying --[no-]recurse-submodules directly.
|
specifying --[no-]recurse-submodules directly.
|
||||||
|
endif::git-pull[]
|
||||||
|
|
||||||
-u::
|
-u::
|
||||||
--update-head-ok::
|
--update-head-ok::
|
||||||
@ -214,7 +210,6 @@ ifndef::git-pull[]
|
|||||||
to communicate with 'git fetch', and unless you are
|
to communicate with 'git fetch', and unless you are
|
||||||
implementing your own Porcelain you are not supposed to
|
implementing your own Porcelain you are not supposed to
|
||||||
use it.
|
use it.
|
||||||
endif::git-pull[]
|
|
||||||
|
|
||||||
--upload-pack <upload-pack>::
|
--upload-pack <upload-pack>::
|
||||||
When given, and the repository to fetch from is handled
|
When given, and the repository to fetch from is handled
|
||||||
|
@ -16,7 +16,7 @@ SYNOPSIS
|
|||||||
[--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
|
[--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
|
||||||
[--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>]
|
[--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>]
|
||||||
[(<mbox> | <Maildir>)...]
|
[(<mbox> | <Maildir>)...]
|
||||||
'git am' (--continue | --skip | --abort | --quit | --show-current-patch[=(diff|raw)])
|
'git am' (--continue | --skip | --abort | --quit | --show-current-patch)
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -148,12 +148,9 @@ default. You can use `--no-utf8` to override this.
|
|||||||
|
|
||||||
-S[<keyid>]::
|
-S[<keyid>]::
|
||||||
--gpg-sign[=<keyid>]::
|
--gpg-sign[=<keyid>]::
|
||||||
--no-gpg-sign::
|
|
||||||
GPG-sign commits. The `keyid` argument is optional and
|
GPG-sign commits. The `keyid` argument is optional and
|
||||||
defaults to the committer identity; if specified, it must be
|
defaults to the committer identity; if specified, it must be
|
||||||
stuck to the option without a space. `--no-gpg-sign` is useful to
|
stuck to the option without a space.
|
||||||
countermand both `commit.gpgSign` configuration variable, and
|
|
||||||
earlier `--gpg-sign`.
|
|
||||||
|
|
||||||
--continue::
|
--continue::
|
||||||
-r::
|
-r::
|
||||||
@ -179,11 +176,9 @@ default. You can use `--no-utf8` to override this.
|
|||||||
Abort the patching operation but keep HEAD and the index
|
Abort the patching operation but keep HEAD and the index
|
||||||
untouched.
|
untouched.
|
||||||
|
|
||||||
--show-current-patch[=(diff|raw)]::
|
--show-current-patch::
|
||||||
Show the message at which `git am` has stopped due to
|
Show the entire e-mail message "git am" has stopped at, because
|
||||||
conflicts. If `raw` is specified, show the raw contents of
|
of conflicts.
|
||||||
the e-mail message; if `diff`, show the diff portion only.
|
|
||||||
Defaults to `raw`.
|
|
||||||
|
|
||||||
DISCUSSION
|
DISCUSSION
|
||||||
----------
|
----------
|
||||||
|
@ -12,7 +12,7 @@ SYNOPSIS
|
|||||||
[-v [--abbrev=<length> | --no-abbrev]]
|
[-v [--abbrev=<length> | --no-abbrev]]
|
||||||
[--column[=<options>] | --no-column] [--sort=<key>]
|
[--column[=<options>] | --no-column] [--sort=<key>]
|
||||||
[(--merged | --no-merged) [<commit>]]
|
[(--merged | --no-merged) [<commit>]]
|
||||||
[--contains [<commit>]] [--no-contains [<commit>]]
|
[--contains [<commit]] [--no-contains [<commit>]]
|
||||||
[--points-at <object>] [--format=<format>]
|
[--points-at <object>] [--format=<format>]
|
||||||
[(-r | --remotes) | (-a | --all)]
|
[(-r | --remotes) | (-a | --all)]
|
||||||
[--list] [<pattern>...]
|
[--list] [<pattern>...]
|
||||||
|
@ -1,54 +0,0 @@
|
|||||||
git-bugreport(1)
|
|
||||||
================
|
|
||||||
|
|
||||||
NAME
|
|
||||||
----
|
|
||||||
git-bugreport - Collect information for user to file a bug report
|
|
||||||
|
|
||||||
SYNOPSIS
|
|
||||||
--------
|
|
||||||
[verse]
|
|
||||||
'git bugreport' [(-o | --output-directory) <path>] [(-s | --suffix) <format>]
|
|
||||||
|
|
||||||
DESCRIPTION
|
|
||||||
-----------
|
|
||||||
Captures information about the user's machine, Git client, and repository state,
|
|
||||||
as well as a form requesting information about the behavior the user observed,
|
|
||||||
into a single text file which the user can then share, for example to the Git
|
|
||||||
mailing list, in order to report an observed bug.
|
|
||||||
|
|
||||||
The following information is requested from the user:
|
|
||||||
|
|
||||||
- Reproduction steps
|
|
||||||
- Expected behavior
|
|
||||||
- Actual behavior
|
|
||||||
|
|
||||||
The following information is captured automatically:
|
|
||||||
|
|
||||||
- 'git version --build-options'
|
|
||||||
- uname sysname, release, version, and machine strings
|
|
||||||
- Compiler-specific info string
|
|
||||||
- A list of enabled hooks
|
|
||||||
- $SHELL
|
|
||||||
|
|
||||||
This tool is invoked via the typical Git setup process, which means that in some
|
|
||||||
cases, it might not be able to launch - for example, if a relevant config file
|
|
||||||
is unreadable. In this kind of scenario, it may be helpful to manually gather
|
|
||||||
the kind of information listed above when manually asking for help.
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-------
|
|
||||||
-o <path>::
|
|
||||||
--output-directory <path>::
|
|
||||||
Place the resulting bug report file in `<path>` instead of the root of
|
|
||||||
the Git repository.
|
|
||||||
|
|
||||||
-s <format>::
|
|
||||||
--suffix <format>::
|
|
||||||
Specify an alternate suffix for the bugreport name, to create a file
|
|
||||||
named 'git-bugreport-<formatted suffix>'. This should take the form of a
|
|
||||||
strftime(3) format string; the current local time will be used.
|
|
||||||
|
|
||||||
GIT
|
|
||||||
---
|
|
||||||
Part of the linkgit:git[1] suite
|
|
@ -10,7 +10,7 @@ SYNOPSIS
|
|||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git cat-file' (-t [--allow-unknown-type]| -s [--allow-unknown-type]| -e | -p | <type> | --textconv | --filters ) [--path=<path>] <object>
|
'git cat-file' (-t [--allow-unknown-type]| -s [--allow-unknown-type]| -e | -p | <type> | --textconv | --filters ) [--path=<path>] <object>
|
||||||
'git cat-file' (--batch[=<format>] | --batch-check[=<format>]) [ --textconv | --filters ] [--follow-symlinks]
|
'git cat-file' (--batch | --batch-check) [ --textconv | --filters ] [--follow-symlinks]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -292,11 +292,11 @@ Note that this option uses the no overlay mode by default (see also
|
|||||||
|
|
||||||
--recurse-submodules::
|
--recurse-submodules::
|
||||||
--no-recurse-submodules::
|
--no-recurse-submodules::
|
||||||
Using `--recurse-submodules` will update the content of all active
|
Using `--recurse-submodules` will update the content of all initialized
|
||||||
submodules according to the commit recorded in the superproject. If
|
submodules according to the commit recorded in the superproject. If
|
||||||
local modifications in a submodule would be overwritten the checkout
|
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, submodules working trees will not be updated.
|
is used, the work trees of submodules will not be updated.
|
||||||
Just like linkgit:git-submodule[1], this will detach `HEAD` of the
|
Just like linkgit:git-submodule[1], this will detach `HEAD` of the
|
||||||
submodule.
|
submodule.
|
||||||
|
|
||||||
|
@ -109,12 +109,9 @@ effect to your index in a row.
|
|||||||
|
|
||||||
-S[<keyid>]::
|
-S[<keyid>]::
|
||||||
--gpg-sign[=<keyid>]::
|
--gpg-sign[=<keyid>]::
|
||||||
--no-gpg-sign::
|
|
||||||
GPG-sign commits. The `keyid` argument is optional and
|
GPG-sign commits. The `keyid` argument is optional and
|
||||||
defaults to the committer identity; if specified, it must be
|
defaults to the committer identity; if specified, it must be
|
||||||
stuck to the option without a space. `--no-gpg-sign` is useful to
|
stuck to the option without a space.
|
||||||
countermand both `commit.gpgSign` configuration variable, and
|
|
||||||
earlier `--gpg-sign`.
|
|
||||||
|
|
||||||
--ff::
|
--ff::
|
||||||
If the current HEAD is the same as the parent of the
|
If the current HEAD is the same as the parent of the
|
||||||
|
@ -15,8 +15,7 @@ SYNOPSIS
|
|||||||
[--dissociate] [--separate-git-dir <git dir>]
|
[--dissociate] [--separate-git-dir <git dir>]
|
||||||
[--depth <depth>] [--[no-]single-branch] [--no-tags]
|
[--depth <depth>] [--[no-]single-branch] [--no-tags]
|
||||||
[--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
|
[--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
|
||||||
[--[no-]remote-submodules] [--jobs <n>] [--sparse]
|
[--[no-]remote-submodules] [--jobs <n>] [--sparse] [--] <repository>
|
||||||
[--filter=<filter>] [--] <repository>
|
|
||||||
[<directory>]
|
[<directory>]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
@ -163,16 +162,6 @@ objects from the source repository into a pack in the cloned repository.
|
|||||||
of the repository. The sparse-checkout file can be
|
of the repository. The sparse-checkout file can be
|
||||||
modified to grow the working directory as needed.
|
modified to grow the working directory as needed.
|
||||||
|
|
||||||
--filter=<filter-spec>::
|
|
||||||
Use the partial clone feature and request that the server sends
|
|
||||||
a subset of reachable objects according to a given object filter.
|
|
||||||
When using `--filter`, the supplied `<filter-spec>` is used for
|
|
||||||
the partial clone filter. For example, `--filter=blob:none` will
|
|
||||||
filter out all blobs (file contents) until needed by Git. Also,
|
|
||||||
`--filter=blob:limit=<size>` will filter out all blobs of size
|
|
||||||
at least `<size>`. For more details on filter specifications, see
|
|
||||||
the `--filter` option in linkgit:git-rev-list[1].
|
|
||||||
|
|
||||||
--mirror::
|
--mirror::
|
||||||
Set up a mirror of the source repository. This implies `--bare`.
|
Set up a mirror of the source repository. This implies `--bare`.
|
||||||
Compared to `--bare`, `--mirror` not only maps local branches of the
|
Compared to `--bare`, `--mirror` not only maps local branches of the
|
||||||
@ -259,7 +248,7 @@ maintain a branch with no references other than a single cloned
|
|||||||
branch. This is useful e.g. to maintain minimal clones of the default
|
branch. This is useful e.g. to maintain minimal clones of the default
|
||||||
branch of some repository for search indexing.
|
branch of some repository for search indexing.
|
||||||
|
|
||||||
--recurse-submodules[=<pathspec>]::
|
--recurse-submodules[=<pathspec]::
|
||||||
After the clone is created, initialize and clone submodules
|
After the clone is created, initialize and clone submodules
|
||||||
within based on the provided pathspec. If no pathspec is
|
within based on the provided pathspec. If no pathspec is
|
||||||
provided, all submodules are initialized and cloned.
|
provided, all submodules are initialized and cloned.
|
||||||
|
@ -26,10 +26,7 @@ OPTIONS
|
|||||||
file. This parameter exists to specify the location of an alternate
|
file. This parameter exists to specify the location of an alternate
|
||||||
that only has the objects directory, not a full `.git` directory. The
|
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 in the `<dir>/info` directory and
|
||||||
the packfiles are expected to be in `<dir>/pack`. If the directory
|
the packfiles are expected to be in `<dir>/pack`.
|
||||||
could not be made into an absolute path, or does not match any known
|
|
||||||
object directory, `git commit-graph ...` will exit with non-zero
|
|
||||||
status.
|
|
||||||
|
|
||||||
--[no-]progress::
|
--[no-]progress::
|
||||||
Turn progress on/off explicitly. If neither is specified, progress is
|
Turn progress on/off explicitly. If neither is specified, progress is
|
||||||
@ -47,10 +44,8 @@ with `--stdin-commits` or `--reachable`.)
|
|||||||
+
|
+
|
||||||
With the `--stdin-commits` option, generate the new commit graph by
|
With the `--stdin-commits` option, generate the new commit graph by
|
||||||
walking commits starting at the commits specified in stdin as a list
|
walking commits starting at the commits specified in stdin as a list
|
||||||
of OIDs in hex, one OID per line. OIDs that resolve to non-commits
|
of OIDs in hex, one OID per line. (Cannot be combined with
|
||||||
(either directly, or by peeling tags) are silently ignored. OIDs that
|
`--stdin-packs` or `--reachable`.)
|
||||||
are malformed, or do not exist generate an error. (Cannot be combined
|
|
||||||
with `--stdin-packs` or `--reachable`.)
|
|
||||||
+
|
+
|
||||||
With the `--reachable` option, generate the new commit graph by walking
|
With the `--reachable` option, generate the new commit graph by walking
|
||||||
commits starting at all refs. (Cannot be combined with `--stdin-commits`
|
commits starting at all refs. (Cannot be combined with `--stdin-commits`
|
||||||
@ -59,24 +54,11 @@ or `--stdin-packs`.)
|
|||||||
With the `--append` option, include all commits that are present in the
|
With the `--append` option, include all commits that are present in the
|
||||||
existing commit-graph file.
|
existing commit-graph file.
|
||||||
+
|
+
|
||||||
With the `--changed-paths` option, compute and write information about the
|
With the `--split` option, write the commit-graph as a chain of multiple
|
||||||
paths changed between a commit and its first parent. This operation can
|
commit-graph files stored in `<dir>/info/commit-graphs`. The new commits
|
||||||
take a while on large repositories. It provides significant performance gains
|
not already in the commit-graph are added in a new "tip" file. This file
|
||||||
for getting history of a directory or a file with `git log -- <path>`.
|
is merged with the existing file if the following merge conditions are
|
||||||
+
|
met:
|
||||||
With the `--split[=<strategy>]` option, write the commit-graph as a
|
|
||||||
chain of multiple commit-graph files stored in
|
|
||||||
`<dir>/info/commit-graphs`. Commit-graph layers are merged based on the
|
|
||||||
strategy and other splitting options. 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 `--split=no-merge` is specified, a merge is never performed, and
|
|
||||||
the remaining options are ignored. `--split=replace` overwrites the
|
|
||||||
existing chain with a new one. A bare `--split` defers to the remaining
|
|
||||||
options. (Note that merging a chain of commit graphs replaces the
|
|
||||||
existing chain with a length-1 chain where the first and only
|
|
||||||
incremental holds the entire graph).
|
|
||||||
+
|
+
|
||||||
* If `--size-multiple=<X>` is not specified, let `X` equal 2. If the new
|
* 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
|
tip file would have `N` commits and the previous tip has `M` commits and
|
||||||
|
@ -61,11 +61,13 @@ OPTIONS
|
|||||||
|
|
||||||
-S[<keyid>]::
|
-S[<keyid>]::
|
||||||
--gpg-sign[=<keyid>]::
|
--gpg-sign[=<keyid>]::
|
||||||
--no-gpg-sign::
|
|
||||||
GPG-sign commits. The `keyid` argument is optional and
|
GPG-sign commits. The `keyid` argument is optional and
|
||||||
defaults to the committer identity; if specified, it must be
|
defaults to the committer identity; if specified, it must be
|
||||||
stuck to the option without a space. `--no-gpg-sign` is useful to
|
stuck to the option without a space.
|
||||||
countermand a `--gpg-sign` option given earlier on the command line.
|
|
||||||
|
--no-gpg-sign::
|
||||||
|
Do not GPG-sign commit, to countermand a `--gpg-sign` option
|
||||||
|
given earlier on the command line.
|
||||||
|
|
||||||
Commit Information
|
Commit Information
|
||||||
------------------
|
------------------
|
||||||
|
@ -348,12 +348,13 @@ changes to tracked files.
|
|||||||
|
|
||||||
-S[<keyid>]::
|
-S[<keyid>]::
|
||||||
--gpg-sign[=<keyid>]::
|
--gpg-sign[=<keyid>]::
|
||||||
--no-gpg-sign::
|
|
||||||
GPG-sign commits. The `keyid` argument is optional and
|
GPG-sign commits. The `keyid` argument is optional and
|
||||||
defaults to the committer identity; if specified, it must be
|
defaults to the committer identity; if specified, it must be
|
||||||
stuck to the option without a space. `--no-gpg-sign` is useful to
|
stuck to the option without a space.
|
||||||
countermand both `commit.gpgSign` configuration variable, and
|
|
||||||
earlier `--gpg-sign`.
|
--no-gpg-sign::
|
||||||
|
Countermand `commit.gpgSign` configuration variable that is
|
||||||
|
set to force each and every commit to be signed.
|
||||||
|
|
||||||
\--::
|
\--::
|
||||||
Do not interpret any more arguments as options.
|
Do not interpret any more arguments as options.
|
||||||
|
@ -9,18 +9,18 @@ git-config - Get and set repository or global options
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] name [value [value_regex]]
|
'git config' [<file-option>] [--type=<type>] [--show-origin] [-z|--null] name [value [value_regex]]
|
||||||
'git config' [<file-option>] [--type=<type>] --add name value
|
'git config' [<file-option>] [--type=<type>] --add name value
|
||||||
'git config' [<file-option>] [--type=<type>] --replace-all name value [value_regex]
|
'git config' [<file-option>] [--type=<type>] --replace-all name value [value_regex]
|
||||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] --get name [value_regex]
|
'git config' [<file-option>] [--type=<type>] [--show-origin] [-z|--null] --get name [value_regex]
|
||||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] --get-all name [value_regex]
|
'git config' [<file-option>] [--type=<type>] [--show-origin] [-z|--null] --get-all name [value_regex]
|
||||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--name-only] --get-regexp name_regex [value_regex]
|
'git config' [<file-option>] [--type=<type>] [--show-origin] [-z|--null] [--name-only] --get-regexp name_regex [value_regex]
|
||||||
'git config' [<file-option>] [--type=<type>] [-z|--null] --get-urlmatch name URL
|
'git config' [<file-option>] [--type=<type>] [-z|--null] --get-urlmatch name URL
|
||||||
'git config' [<file-option>] --unset name [value_regex]
|
'git config' [<file-option>] --unset name [value_regex]
|
||||||
'git config' [<file-option>] --unset-all name [value_regex]
|
'git config' [<file-option>] --unset-all name [value_regex]
|
||||||
'git config' [<file-option>] --rename-section old_name new_name
|
'git config' [<file-option>] --rename-section old_name new_name
|
||||||
'git config' [<file-option>] --remove-section name
|
'git config' [<file-option>] --remove-section name
|
||||||
'git config' [<file-option>] [--show-origin] [--show-scope] [-z|--null] [--name-only] -l | --list
|
'git config' [<file-option>] [--show-origin] [-z|--null] [--name-only] -l | --list
|
||||||
'git config' [<file-option>] --get-color name [default]
|
'git config' [<file-option>] --get-color name [default]
|
||||||
'git config' [<file-option>] --get-colorbool name [stdout-is-tty]
|
'git config' [<file-option>] --get-colorbool name [stdout-is-tty]
|
||||||
'git config' [<file-option>] -e | --edit
|
'git config' [<file-option>] -e | --edit
|
||||||
@ -222,11 +222,6 @@ Valid `<type>`'s include:
|
|||||||
the actual origin (config file path, ref, or blob id if
|
the actual origin (config file path, ref, or blob id if
|
||||||
applicable).
|
applicable).
|
||||||
|
|
||||||
--show-scope::
|
|
||||||
Similar to `--show-origin` in that it augments the output of
|
|
||||||
all queried config options with the scope of that value
|
|
||||||
(local, global, system, command).
|
|
||||||
|
|
||||||
--get-colorbool name [stdout-is-tty]::
|
--get-colorbool name [stdout-is-tty]::
|
||||||
|
|
||||||
Find the color setting for `name` (e.g. `color.diff`) and output
|
Find the color setting for `name` (e.g. `color.diff`) and output
|
||||||
|
@ -94,10 +94,6 @@ stored on its own line as a URL like:
|
|||||||
https://user:pass@example.com
|
https://user:pass@example.com
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
No other kinds of lines (e.g. empty lines or comment lines) are
|
|
||||||
allowed in the file, even though some may be silently ignored. Do
|
|
||||||
not view or edit the file with editors.
|
|
||||||
|
|
||||||
When Git needs authentication for a particular URL context,
|
When Git needs authentication for a particular URL context,
|
||||||
credential-store will consider that context a pattern to match against
|
credential-store will consider that context a pattern to match against
|
||||||
each entry in the credentials file. If the protocol, hostname, and
|
each entry in the credentials file. If the protocol, hostname, and
|
||||||
|
@ -103,20 +103,17 @@ INPUT/OUTPUT FORMAT
|
|||||||
`git credential` reads and/or writes (depending on the action used)
|
`git credential` reads and/or writes (depending on the action used)
|
||||||
credential information in its standard input/output. This information
|
credential information in its standard input/output. This information
|
||||||
can correspond either to keys for which `git credential` will obtain
|
can correspond either to keys for which `git credential` will obtain
|
||||||
the login information (e.g. host, protocol, path), or to the actual
|
the login/password information (e.g. host, protocol, path), or to the
|
||||||
credential data to be obtained (username/password).
|
actual credential data to be obtained (login/password).
|
||||||
|
|
||||||
The credential is split into a set of named attributes, with one
|
The credential is split into a set of named attributes, with one
|
||||||
attribute per line. Each attribute is specified by a key-value pair,
|
attribute per line. Each attribute is
|
||||||
separated by an `=` (equals) sign, followed by a newline.
|
specified by a key-value pair, separated by an `=` (equals) sign,
|
||||||
|
followed by a newline. The key may contain any bytes except `=`,
|
||||||
The key may contain any bytes except `=`, newline, or NUL. The value may
|
newline, or NUL. The value may contain any bytes except newline or NUL.
|
||||||
contain any bytes except newline or NUL.
|
|
||||||
|
|
||||||
In both cases, all bytes are treated as-is (i.e., there is no quoting,
|
In both cases, all bytes are treated as-is (i.e., there is no quoting,
|
||||||
and one cannot transmit a value with newline or NUL in it). The list of
|
and one cannot transmit a value with newline or NUL in it). The list of
|
||||||
attributes is terminated by a blank line or end-of-file.
|
attributes is terminated by a blank line or end-of-file.
|
||||||
|
|
||||||
Git understands the following attributes:
|
Git understands the following attributes:
|
||||||
|
|
||||||
`protocol`::
|
`protocol`::
|
||||||
@ -126,8 +123,7 @@ Git understands the following attributes:
|
|||||||
|
|
||||||
`host`::
|
`host`::
|
||||||
|
|
||||||
The remote hostname for a network credential. This includes
|
The remote hostname for a network credential.
|
||||||
the port number if one was specified (e.g., "example.com:8088").
|
|
||||||
|
|
||||||
`path`::
|
`path`::
|
||||||
|
|
||||||
@ -138,7 +134,7 @@ Git understands the following attributes:
|
|||||||
`username`::
|
`username`::
|
||||||
|
|
||||||
The credential's username, if we already have one (e.g., from a
|
The credential's username, if we already have one (e.g., from a
|
||||||
URL, the configuration, the user, or from a previously run helper).
|
URL, from the user, or from a previously run helper).
|
||||||
|
|
||||||
`password`::
|
`password`::
|
||||||
|
|
||||||
@ -150,12 +146,8 @@ Git understands the following attributes:
|
|||||||
value is parsed as a URL and treated as if its constituent parts
|
value is parsed as a URL and treated as if its constituent parts
|
||||||
were read (e.g., `url=https://example.com` would behave as if
|
were read (e.g., `url=https://example.com` would behave as if
|
||||||
`protocol=https` and `host=example.com` had been provided). This
|
`protocol=https` and `host=example.com` had been provided). This
|
||||||
can help callers avoid parsing URLs themselves.
|
can help callers avoid parsing URLs themselves. Note that any
|
||||||
+
|
components which are missing from the URL (e.g., there is no
|
||||||
Note that specifying a protocol is mandatory and if the URL
|
username in the example above) will be set to empty; if you want
|
||||||
doesn't specify a hostname (e.g., "cert:///path/to/file") the
|
to provide a URL and override some attributes, provide the URL
|
||||||
credential will contain a hostname attribute whose value is an
|
attribute first, followed by any overrides.
|
||||||
empty string.
|
|
||||||
+
|
|
||||||
Components which are missing from the URL (e.g., there is no
|
|
||||||
username in the example above) will be left unset.
|
|
||||||
|
@ -11,17 +11,15 @@ SYNOPSIS
|
|||||||
[verse]
|
[verse]
|
||||||
'git diff' [<options>] [<commit>] [--] [<path>...]
|
'git diff' [<options>] [<commit>] [--] [<path>...]
|
||||||
'git diff' [<options>] --cached [<commit>] [--] [<path>...]
|
'git diff' [<options>] --cached [<commit>] [--] [<path>...]
|
||||||
'git diff' [<options>] <commit> [<commit>...] <commit> [--] [<path>...]
|
'git diff' [<options>] <commit> <commit> [--] [<path>...]
|
||||||
'git diff' [<options>] <commit>...<commit> [--] [<path>...]
|
|
||||||
'git diff' [<options>] <blob> <blob>
|
'git diff' [<options>] <blob> <blob>
|
||||||
'git diff' [<options>] --no-index [--] <path> <path>
|
'git diff' [<options>] --no-index [--] <path> <path>
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
Show changes between the working tree and the index or a tree, changes
|
Show changes between the working tree and the index or a tree, changes
|
||||||
between the index and a tree, changes between two trees, changes resulting
|
between the index and a tree, changes between two trees, changes between
|
||||||
from a merge, changes between two blob objects, or changes between two
|
two blob objects, or changes between two files on disk.
|
||||||
files on disk.
|
|
||||||
|
|
||||||
'git diff' [<options>] [--] [<path>...]::
|
'git diff' [<options>] [--] [<path>...]::
|
||||||
|
|
||||||
@ -63,19 +61,9 @@ files on disk.
|
|||||||
This is to view the changes between two arbitrary
|
This is to view the changes between two arbitrary
|
||||||
<commit>.
|
<commit>.
|
||||||
|
|
||||||
'git diff' [<options>] <commit> <commit>... <commit> [--] [<path>...]::
|
|
||||||
|
|
||||||
This form is to view the results of a merge commit. The first
|
|
||||||
listed <commit> must be the merge itself; the remaining two or
|
|
||||||
more commits should be its parents. A convenient way to produce
|
|
||||||
the desired set of revisions is to use the {caret}@ suffix.
|
|
||||||
For instance, if `master` names a merge commit, `git diff master
|
|
||||||
master^@` gives the same combined diff as `git show master`.
|
|
||||||
|
|
||||||
'git diff' [<options>] <commit>..<commit> [--] [<path>...]::
|
'git diff' [<options>] <commit>..<commit> [--] [<path>...]::
|
||||||
|
|
||||||
This is synonymous to the earlier form (without the "..") for
|
This is synonymous to the previous form. If <commit> on
|
||||||
viewing the changes between two arbitrary <commit>. If <commit> on
|
|
||||||
one side is omitted, it will have the same effect as
|
one side is omitted, it will have the same effect as
|
||||||
using HEAD instead.
|
using HEAD instead.
|
||||||
|
|
||||||
@ -208,8 +196,7 @@ linkgit:git-difftool[1],
|
|||||||
linkgit:git-log[1],
|
linkgit:git-log[1],
|
||||||
linkgit:gitdiffcore[7],
|
linkgit:gitdiffcore[7],
|
||||||
linkgit:git-format-patch[1],
|
linkgit:git-format-patch[1],
|
||||||
linkgit:git-apply[1],
|
linkgit:git-apply[1]
|
||||||
linkgit:git-show[1]
|
|
||||||
|
|
||||||
GIT
|
GIT
|
||||||
---
|
---
|
||||||
|
@ -119,11 +119,6 @@ by keeping the marks the same across runs.
|
|||||||
the shape of the history and stored tree. See the section on
|
the shape of the history and stored tree. See the section on
|
||||||
`ANONYMIZING` below.
|
`ANONYMIZING` below.
|
||||||
|
|
||||||
--anonymize-map=<from>[:<to>]::
|
|
||||||
Convert token `<from>` to `<to>` in the anonymized output. If
|
|
||||||
`<to>` is omitted, map `<from>` to itself (i.e., do not
|
|
||||||
anonymize it). See the section on `ANONYMIZING` below.
|
|
||||||
|
|
||||||
--reference-excluded-parents::
|
--reference-excluded-parents::
|
||||||
By default, running a command such as `git fast-export
|
By default, running a command such as `git fast-export
|
||||||
master~5..master` will not include the commit master{tilde}5
|
master~5..master` will not include the commit master{tilde}5
|
||||||
@ -243,30 +238,6 @@ collapse "User 0", "User 1", etc into "User X"). This produces a much
|
|||||||
smaller output, and it is usually easy to quickly confirm that there is
|
smaller output, and it is usually easy to quickly confirm that there is
|
||||||
no private data in the stream.
|
no private data in the stream.
|
||||||
|
|
||||||
Reproducing some bugs may require referencing particular commits or
|
|
||||||
paths, which becomes challenging after refnames and paths have been
|
|
||||||
anonymized. You can ask for a particular token to be left as-is or
|
|
||||||
mapped to a new value. For example, if you have a bug which reproduces
|
|
||||||
with `git rev-list sensitive -- secret.c`, you can run:
|
|
||||||
|
|
||||||
---------------------------------------------------
|
|
||||||
$ git fast-export --anonymize --all \
|
|
||||||
--anonymize-map=sensitive:foo \
|
|
||||||
--anonymize-map=secret.c:bar.c \
|
|
||||||
>stream
|
|
||||||
---------------------------------------------------
|
|
||||||
|
|
||||||
After importing the stream, you can then run `git rev-list foo -- bar.c`
|
|
||||||
in the anonymized repository.
|
|
||||||
|
|
||||||
Note that paths and refnames are split into tokens at slash boundaries.
|
|
||||||
The command above would anonymize `subdir/secret.c` as something like
|
|
||||||
`path123/bar.c`; you could then search for `bar.c` in the anonymized
|
|
||||||
repository to determine the final pathname.
|
|
||||||
|
|
||||||
To make referencing the final pathname simpler, you can map each path
|
|
||||||
component; so if you also anonymize `subdir` to `publicdir`, then the
|
|
||||||
final pathname would be `publicdir/bar.c`.
|
|
||||||
|
|
||||||
LIMITATIONS
|
LIMITATIONS
|
||||||
-----------
|
-----------
|
||||||
|
@ -122,26 +122,6 @@ Locations of Marks Files
|
|||||||
Relative and non-relative marks may be combined by interweaving
|
Relative and non-relative marks may be combined by interweaving
|
||||||
--(no-)-relative-marks with the --(import|export)-marks= options.
|
--(no-)-relative-marks with the --(import|export)-marks= options.
|
||||||
|
|
||||||
Submodule Rewriting
|
|
||||||
~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
--rewrite-submodules-from=<name>:<file>::
|
|
||||||
--rewrite-submodules-to=<name>:<file>::
|
|
||||||
Rewrite the object IDs for the submodule specified by <name> from the values
|
|
||||||
used in the from <file> to those used in the to <file>. The from marks should
|
|
||||||
have been created by `git fast-export`, and the to marks should have been
|
|
||||||
created by `git fast-import` when importing that same submodule.
|
|
||||||
+
|
|
||||||
<name> may be any arbitrary string not containing a colon character, but the
|
|
||||||
same value must be used with both options when specifying corresponding marks.
|
|
||||||
Multiple submodules may be specified with different values for <name>. It is an
|
|
||||||
error not to use these options in corresponding pairs.
|
|
||||||
+
|
|
||||||
These options are primarily useful when converting a repository from one hash
|
|
||||||
algorithm to another; without them, fast-import will fail if it encounters a
|
|
||||||
submodule because it has no way of writing the object ID into the new hash
|
|
||||||
algorithm.
|
|
||||||
|
|
||||||
Performance and Compression Tuning
|
Performance and Compression Tuning
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
@ -293,14 +273,7 @@ by users who are located in the same location and time zone. In this
|
|||||||
case a reasonable offset from UTC could be assumed.
|
case a reasonable offset from UTC could be assumed.
|
||||||
+
|
+
|
||||||
Unlike the `rfc2822` format, this format is very strict. Any
|
Unlike the `rfc2822` format, this format is very strict. Any
|
||||||
variation in formatting will cause fast-import to reject the value,
|
variation in formatting will cause fast-import to reject the value.
|
||||||
and some sanity checks on the numeric values may also be performed.
|
|
||||||
|
|
||||||
`raw-permissive`::
|
|
||||||
This is the same as `raw` except that no sanity checks on
|
|
||||||
the numeric epoch and local offset are performed. This can
|
|
||||||
be useful when trying to filter or import an existing history
|
|
||||||
with e.g. bogus timezone values.
|
|
||||||
|
|
||||||
`rfc2822`::
|
`rfc2822`::
|
||||||
This is the standard email format as described by RFC 2822.
|
This is the standard email format as described by RFC 2822.
|
||||||
|
@ -255,14 +255,14 @@ refspec.
|
|||||||
* Using refspecs explicitly:
|
* Using refspecs explicitly:
|
||||||
+
|
+
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
$ git fetch origin +seen:seen maint:tmp
|
$ git fetch origin +pu:pu maint:tmp
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
+
|
+
|
||||||
This updates (or creates, as necessary) branches `seen` and `tmp` in
|
This updates (or creates, as necessary) branches `pu` and `tmp` in
|
||||||
the local repository by fetching from the branches (respectively)
|
the local repository by fetching from the branches (respectively)
|
||||||
`seen` and `maint` from the remote repository.
|
`pu` and `maint` from the remote repository.
|
||||||
+
|
+
|
||||||
The `seen` branch will be updated even if it does not fast-forward,
|
The `pu` branch will be updated even if it does not fast-forward,
|
||||||
because it is prefixed with a plus sign; `tmp` will not be.
|
because it is prefixed with a plus sign; `tmp` will not be.
|
||||||
|
|
||||||
* Peek at a remote's branch, without configuring the remote in your local
|
* Peek at a remote's branch, without configuring the remote in your local
|
||||||
|
@ -24,7 +24,6 @@ SYNOPSIS
|
|||||||
[(--reroll-count|-v) <n>]
|
[(--reroll-count|-v) <n>]
|
||||||
[--to=<email>] [--cc=<email>]
|
[--to=<email>] [--cc=<email>]
|
||||||
[--[no-]cover-letter] [--quiet]
|
[--[no-]cover-letter] [--quiet]
|
||||||
[--[no-]encode-email-headers]
|
|
||||||
[--no-notes | --notes[=<ref>]]
|
[--no-notes | --notes[=<ref>]]
|
||||||
[--interdiff=<previous>]
|
[--interdiff=<previous>]
|
||||||
[--range-diff=<previous> [--creation-factor=<percent>]]
|
[--range-diff=<previous> [--creation-factor=<percent>]]
|
||||||
@ -254,13 +253,6 @@ feeding the result to `git send-email`.
|
|||||||
containing the branch description, shortlog and the overall diffstat. You can
|
containing the branch description, shortlog and the overall diffstat. You can
|
||||||
fill in a description in the file before sending it out.
|
fill in a description in the file before sending it out.
|
||||||
|
|
||||||
--encode-email-headers::
|
|
||||||
--no-encode-email-headers::
|
|
||||||
Encode email headers that have non-ASCII characters with
|
|
||||||
"Q-encoding" (described in RFC 2047), instead of outputting the
|
|
||||||
headers verbatim. Defaults to the value of the
|
|
||||||
`format.encodeEmailHeaders` configuration variable.
|
|
||||||
|
|
||||||
--interdiff=<previous>::
|
--interdiff=<previous>::
|
||||||
As a reviewer aid, insert an interdiff into the cover letter,
|
As a reviewer aid, insert an interdiff into the cover letter,
|
||||||
or as commentary of the lone patch of a 1-patch series, showing
|
or as commentary of the lone patch of a 1-patch series, showing
|
||||||
|
@ -59,8 +59,8 @@ grep.extendedRegexp::
|
|||||||
other than 'default'.
|
other than 'default'.
|
||||||
|
|
||||||
grep.threads::
|
grep.threads::
|
||||||
Number of grep worker threads to use. If unset (or set to 0), Git will
|
Number of grep worker threads to use. If unset (or set to 0),
|
||||||
use as many threads as the number of logical cores available.
|
8 threads are used by default (for now).
|
||||||
|
|
||||||
grep.fullName::
|
grep.fullName::
|
||||||
If set to true, enable `--full-name` option by default.
|
If set to true, enable `--full-name` option by default.
|
||||||
@ -93,7 +93,7 @@ OPTIONS
|
|||||||
with `--no-index`.
|
with `--no-index`.
|
||||||
|
|
||||||
--recurse-submodules::
|
--recurse-submodules::
|
||||||
Recursively search in each submodule that is active and
|
Recursively search in each submodule that has been initialized and
|
||||||
checked out in the repository. When used in combination with the
|
checked out in the repository. When used in combination with the
|
||||||
<tree> option the prefix of all submodule output will be the name of
|
<tree> option the prefix of all submodule output will be the name of
|
||||||
the parent project's <tree> object. This option has no effect
|
the parent project's <tree> object. This option has no effect
|
||||||
@ -206,10 +206,8 @@ providing this option will cause it to die.
|
|||||||
|
|
||||||
-z::
|
-z::
|
||||||
--null::
|
--null::
|
||||||
Use \0 as the delimiter for pathnames in the output, and print
|
Output \0 instead of the character that normally follows a
|
||||||
them verbatim. Without this option, pathnames with "unusual"
|
file name.
|
||||||
characters are quoted as explained for the configuration
|
|
||||||
variable core.quotePath (see git-config(1)).
|
|
||||||
|
|
||||||
-o::
|
-o::
|
||||||
--only-matching::
|
--only-matching::
|
||||||
@ -350,17 +348,6 @@ EXAMPLES
|
|||||||
`git grep solution -- :^Documentation`::
|
`git grep solution -- :^Documentation`::
|
||||||
Looks for `solution`, excluding files in `Documentation`.
|
Looks for `solution`, excluding files in `Documentation`.
|
||||||
|
|
||||||
NOTES ON THREADS
|
|
||||||
----------------
|
|
||||||
|
|
||||||
The `--threads` option (and the grep.threads configuration) will be ignored when
|
|
||||||
`--open-files-in-pager` is used, forcing a single-threaded execution.
|
|
||||||
|
|
||||||
When grepping the object store (with `--cached` or giving tree objects), running
|
|
||||||
with multiple threads might perform slower than single threaded if `--textconv`
|
|
||||||
is given and there're too many text conversions. So if you experience low
|
|
||||||
performance in this case, it might be desirable to use `--threads=1`.
|
|
||||||
|
|
||||||
GIT
|
GIT
|
||||||
---
|
---
|
||||||
Part of the linkgit:git[1] suite
|
Part of the linkgit:git[1] suite
|
||||||
|
@ -9,7 +9,7 @@ git-http-fetch - Download from a remote Git repository via HTTP
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git http-fetch' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] [--stdin | --packfile=<hash> | <commit>] <url>
|
'git http-fetch' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] [--stdin] <commit> <url>
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -40,13 +40,6 @@ commit-id::
|
|||||||
|
|
||||||
<commit-id>['\t'<filename-as-in--w>]
|
<commit-id>['\t'<filename-as-in--w>]
|
||||||
|
|
||||||
--packfile=<hash>::
|
|
||||||
Instead of a commit id on the command line (which is not expected in
|
|
||||||
this case), 'git http-fetch' fetches the packfile directly at the given
|
|
||||||
URL and uses index-pack to generate corresponding .idx and .keep files.
|
|
||||||
The hash is used to determine the name of the temporary file and is
|
|
||||||
arbitrary. The output of index-pack is printed to stdout.
|
|
||||||
|
|
||||||
--recover::
|
--recover::
|
||||||
Verify that everything reachable from target is fetched. Used after
|
Verify that everything reachable from target is fetched. Used after
|
||||||
an earlier fetch is interrupted.
|
an earlier fetch is interrupted.
|
||||||
|
@ -93,14 +93,6 @@ OPTIONS
|
|||||||
--max-input-size=<size>::
|
--max-input-size=<size>::
|
||||||
Die, if the pack is larger than <size>.
|
Die, if the pack is larger than <size>.
|
||||||
|
|
||||||
--object-format=<hash-algorithm>::
|
|
||||||
Specify the given object format (hash algorithm) for the pack. The valid
|
|
||||||
values are 'sha1' and (if enabled) 'sha256'. The default is the algorithm for
|
|
||||||
the current repository (set by `extensions.objectFormat`), or 'sha1' if no
|
|
||||||
value is set or outside a repository.
|
|
||||||
+
|
|
||||||
This option cannot be used with --stdin.
|
|
||||||
|
|
||||||
NOTES
|
NOTES
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
@ -10,8 +10,7 @@ SYNOPSIS
|
|||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git init' [-q | --quiet] [--bare] [--template=<template_directory>]
|
'git init' [-q | --quiet] [--bare] [--template=<template_directory>]
|
||||||
[--separate-git-dir <git dir>] [--object-format=<format>]
|
[--separate-git-dir <git dir>]
|
||||||
[-b <branch-name> | --initial-branch=<branch-name>]
|
|
||||||
[--shared[=<permissions>]] [directory]
|
[--shared[=<permissions>]] [directory]
|
||||||
|
|
||||||
|
|
||||||
@ -49,11 +48,6 @@ Only print error and warning messages; all other output will be suppressed.
|
|||||||
Create a bare repository. If `GIT_DIR` environment is not set, it is set to the
|
Create a bare repository. If `GIT_DIR` environment is not set, it is set to the
|
||||||
current working directory.
|
current working directory.
|
||||||
|
|
||||||
--object-format=<format>::
|
|
||||||
|
|
||||||
Specify the given object format (hash algorithm) for the repository. The valid
|
|
||||||
values are 'sha1' and (if enabled) 'sha256'. 'sha1' is the default.
|
|
||||||
|
|
||||||
--template=<template_directory>::
|
--template=<template_directory>::
|
||||||
|
|
||||||
Specify the directory from which templates will be used. (See the "TEMPLATE
|
Specify the directory from which templates will be used. (See the "TEMPLATE
|
||||||
@ -68,12 +62,6 @@ repository.
|
|||||||
+
|
+
|
||||||
If this is reinitialization, the repository will be moved to the specified path.
|
If this is reinitialization, the repository will be moved to the specified path.
|
||||||
|
|
||||||
-b <branch-name::
|
|
||||||
--initial-branch=<branch-name>::
|
|
||||||
|
|
||||||
Use the specified name for the initial branch in the newly created repository.
|
|
||||||
If not specified, fall back to the default name: `master`.
|
|
||||||
|
|
||||||
--shared[=(false|true|umask|group|all|world|everybody|0xxx)]::
|
--shared[=(false|true|umask|group|all|world|everybody|0xxx)]::
|
||||||
|
|
||||||
Specify that the Git repository is to be shared amongst several users. This
|
Specify that the Git repository is to be shared amongst several users. This
|
||||||
|
@ -43,16 +43,12 @@ OPTIONS
|
|||||||
If no `--decorate-refs` is given, pretend as if all refs were
|
If no `--decorate-refs` is given, pretend as if all refs were
|
||||||
included. For each candidate, do not use it for decoration if it
|
included. For each candidate, do not use it for decoration if it
|
||||||
matches any patterns given to `--decorate-refs-exclude` or if it
|
matches any patterns given to `--decorate-refs-exclude` or if it
|
||||||
doesn't match any of the patterns given to `--decorate-refs`. The
|
doesn't match any of the patterns given to `--decorate-refs`.
|
||||||
`log.excludeDecoration` config option allows excluding refs from
|
|
||||||
the decorations, but an explicit `--decorate-refs` pattern will
|
|
||||||
override a match in `log.excludeDecoration`.
|
|
||||||
|
|
||||||
--source::
|
--source::
|
||||||
Print out the ref name given on the command line by which each
|
Print out the ref name given on the command line by which each
|
||||||
commit was reached.
|
commit was reached.
|
||||||
|
|
||||||
--[no-]mailmap::
|
|
||||||
--[no-]use-mailmap::
|
--[no-]use-mailmap::
|
||||||
Use mailmap file to map author and committer names and email
|
Use mailmap file to map author and committer names and email
|
||||||
addresses to canonical real names and email addresses. See
|
addresses to canonical real names and email addresses. See
|
||||||
|
@ -148,7 +148,7 @@ a space) at the start of each line:
|
|||||||
top directory.
|
top directory.
|
||||||
|
|
||||||
--recurse-submodules::
|
--recurse-submodules::
|
||||||
Recursively calls ls-files on each active submodule in the repository.
|
Recursively calls ls-files on each submodule in the repository.
|
||||||
Currently there is only support for the --cached mode.
|
Currently there is only support for the --cached mode.
|
||||||
|
|
||||||
--abbrev[=<n>]::
|
--abbrev[=<n>]::
|
||||||
|
@ -101,9 +101,9 @@ f25a265a342aed6041ab0cc484224d9ca54b6f41 refs/tags/v0.99.1
|
|||||||
7ceca275d047c90c0c7d5afb13ab97efdf51bd6e refs/tags/v0.99.3
|
7ceca275d047c90c0c7d5afb13ab97efdf51bd6e refs/tags/v0.99.3
|
||||||
c5db5456ae3b0873fc659c19fafdde22313cc441 refs/tags/v0.99.2
|
c5db5456ae3b0873fc659c19fafdde22313cc441 refs/tags/v0.99.2
|
||||||
0918385dbd9656cab0d1d81ba7453d49bbc16250 refs/tags/junio-gpg-pub
|
0918385dbd9656cab0d1d81ba7453d49bbc16250 refs/tags/junio-gpg-pub
|
||||||
$ git ls-remote http://www.kernel.org/pub/scm/git/git.git master seen rc
|
$ git ls-remote http://www.kernel.org/pub/scm/git/git.git master pu rc
|
||||||
5fe978a5381f1fbad26a80e682ddd2a401966740 refs/heads/master
|
5fe978a5381f1fbad26a80e682ddd2a401966740 refs/heads/master
|
||||||
c781a84b5204fb294c9ccc79f8b3baceeb32c061 refs/heads/seen
|
c781a84b5204fb294c9ccc79f8b3baceeb32c061 refs/heads/pu
|
||||||
$ git remote add korg http://www.kernel.org/pub/scm/git/git.git
|
$ git remote add korg http://www.kernel.org/pub/scm/git/git.git
|
||||||
$ git ls-remote --tags korg v\*
|
$ git ls-remote --tags korg v\*
|
||||||
d6602ec5194c87b0fc87103ca4d67251c76f233a refs/tags/v0.99
|
d6602ec5194c87b0fc87103ca4d67251c76f233a refs/tags/v0.99
|
||||||
|
@ -94,8 +94,7 @@ will be appended to the specified message.
|
|||||||
|
|
||||||
--abort::
|
--abort::
|
||||||
Abort the current conflict resolution process, and
|
Abort the current conflict resolution process, and
|
||||||
try to reconstruct the pre-merge state. If an autostash entry is
|
try to reconstruct the pre-merge state.
|
||||||
present, apply it to the worktree.
|
|
||||||
+
|
+
|
||||||
If there were uncommitted worktree changes present when the merge
|
If there were uncommitted worktree changes present when the merge
|
||||||
started, 'git merge --abort' will in some cases be unable to
|
started, 'git merge --abort' will in some cases be unable to
|
||||||
@ -103,15 +102,11 @@ reconstruct these changes. It is therefore recommended to always
|
|||||||
commit or stash your changes before running 'git merge'.
|
commit or stash your changes before running 'git merge'.
|
||||||
+
|
+
|
||||||
'git merge --abort' is equivalent to 'git reset --merge' when
|
'git merge --abort' is equivalent to 'git reset --merge' when
|
||||||
`MERGE_HEAD` is present unless `MERGE_AUTOSTASH` is also present in
|
`MERGE_HEAD` is present.
|
||||||
which case 'git merge --abort' applies the stash entry to the worktree
|
|
||||||
whereas 'git reset --merge' will save the stashed changes in the stash
|
|
||||||
list.
|
|
||||||
|
|
||||||
--quit::
|
--quit::
|
||||||
Forget about the current merge in progress. Leave the index
|
Forget about the current merge in progress. Leave the index
|
||||||
and the working tree as-is. If `MERGE_AUTOSTASH` is present, the
|
and the working tree as-is.
|
||||||
stash entry will be saved to the stash list.
|
|
||||||
|
|
||||||
--continue::
|
--continue::
|
||||||
After a 'git merge' stops due to conflicts you can conclude the
|
After a 'git merge' stops due to conflicts you can conclude the
|
||||||
|
@ -56,9 +56,6 @@ repack::
|
|||||||
file is created, rewrite the multi-pack-index to reference the
|
file is created, rewrite the multi-pack-index to reference the
|
||||||
new pack-file. A later run of 'git multi-pack-index expire' will
|
new pack-file. A later run of 'git multi-pack-index expire' will
|
||||||
delete the pack-files that were part of this batch.
|
delete the pack-files that were part of this batch.
|
||||||
+
|
|
||||||
If `repack.packKeptObjects` is `false`, then any pack-files with an
|
|
||||||
associated `.keep` file will not be selected for the batch to repack.
|
|
||||||
|
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
|
@ -374,55 +374,14 @@ These options can be used to modify 'git p4 submit' behavior.
|
|||||||
been submitted. Implies --disable-rebase. Can also be set with
|
been submitted. Implies --disable-rebase. Can also be set with
|
||||||
git-p4.disableP4Sync. Sync with origin/master still goes ahead if possible.
|
git-p4.disableP4Sync. Sync with origin/master still goes ahead if possible.
|
||||||
|
|
||||||
Hooks for submit
|
Hook for submit
|
||||||
----------------
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
p4-pre-submit
|
|
||||||
~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
The `p4-pre-submit` hook is executed if it exists and is executable.
|
The `p4-pre-submit` hook is executed if it exists and is executable.
|
||||||
The hook takes no parameters and nothing from standard input. Exiting with
|
The hook takes no parameters and nothing from standard input. Exiting with
|
||||||
non-zero status from this script prevents `git-p4 submit` from launching.
|
non-zero status from this script prevents `git-p4 submit` from launching.
|
||||||
It can be bypassed with the `--no-verify` command line option.
|
|
||||||
|
|
||||||
One usage scenario is to run unit tests in the hook.
|
One usage scenario is to run unit tests in the hook.
|
||||||
|
|
||||||
p4-prepare-changelist
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
The `p4-prepare-changelist` hook is executed right after preparing
|
|
||||||
the default changelist message and before the editor is started.
|
|
||||||
It takes one parameter, the name of the file that contains the
|
|
||||||
changelist text. Exiting with a non-zero status from the script
|
|
||||||
will abort the process.
|
|
||||||
|
|
||||||
The purpose of the hook is to edit the message file in place,
|
|
||||||
and it is not supressed by the `--no-verify` option. This hook
|
|
||||||
is called even if `--prepare-p4-only` is set.
|
|
||||||
|
|
||||||
p4-changelist
|
|
||||||
~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
The `p4-changelist` hook is executed after the changelist
|
|
||||||
message has been edited by the user. It can be bypassed with the
|
|
||||||
`--no-verify` option. It takes a single parameter, the name
|
|
||||||
of the file that holds the proposed changelist text. Exiting
|
|
||||||
with a non-zero status causes the command to abort.
|
|
||||||
|
|
||||||
The hook is allowed to edit the changelist file and can be used
|
|
||||||
to normalize the text into some project standard format. It can
|
|
||||||
also be used to refuse the Submit after inspect the message file.
|
|
||||||
|
|
||||||
p4-post-changelist
|
|
||||||
~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
The `p4-post-changelist` hook is invoked after the submit has
|
|
||||||
successfully occured in P4. It takes no parameters and is meant
|
|
||||||
primarily for notification and cannot affect the outcome of the
|
|
||||||
git p4 submit action.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Rebase options
|
Rebase options
|
||||||
~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~
|
||||||
These options can be used to modify 'git p4 rebase' behavior.
|
These options can be used to modify 'git p4 rebase' behavior.
|
||||||
|
@ -14,7 +14,7 @@ SYNOPSIS
|
|||||||
[--local] [--incremental] [--window=<n>] [--depth=<n>]
|
[--local] [--incremental] [--window=<n>] [--depth=<n>]
|
||||||
[--revs [--unpacked | --all]] [--keep-pack=<pack-name>]
|
[--revs [--unpacked | --all]] [--keep-pack=<pack-name>]
|
||||||
[--stdout [--filter=<filter-spec>] | base-name]
|
[--stdout [--filter=<filter-spec>] | base-name]
|
||||||
[--shallow] [--keep-true-parents] [--[no-]sparse] < object-list
|
[--shallow] [--keep-true-parents] [--sparse] < object-list
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
@ -196,16 +196,14 @@ depth is 4095.
|
|||||||
Add --no-reuse-object if you want to force a uniform compression
|
Add --no-reuse-object if you want to force a uniform compression
|
||||||
level on all data no matter the source.
|
level on all data no matter the source.
|
||||||
|
|
||||||
--[no-]sparse::
|
--sparse::
|
||||||
Toggle the "sparse" algorithm to determine which objects to include in
|
Use the "sparse" algorithm to determine which objects to include in
|
||||||
the pack, when combined with the "--revs" option. This algorithm
|
the pack, when combined with the "--revs" option. This algorithm
|
||||||
only walks trees that appear in paths that introduce new objects.
|
only walks trees that appear in paths that introduce new objects.
|
||||||
This can have significant performance benefits when computing
|
This can have significant performance benefits when computing
|
||||||
a pack to send a small change. However, it is possible that extra
|
a pack to send a small change. However, it is possible that extra
|
||||||
objects are added to the pack-file if the included commits contain
|
objects are added to the pack-file if the included commits contain
|
||||||
certain types of direct renames. If this option is not included,
|
certain types of direct renames.
|
||||||
it defaults to the value of `pack.useSparse`, which is true unless
|
|
||||||
otherwise specified.
|
|
||||||
|
|
||||||
--thin::
|
--thin::
|
||||||
Create a "thin" pack by omitting the common objects between a
|
Create a "thin" pack by omitting the common objects between a
|
||||||
|
@ -85,9 +85,8 @@ OPTIONS
|
|||||||
Pass --verbose to git-fetch and git-merge.
|
Pass --verbose to git-fetch and git-merge.
|
||||||
|
|
||||||
--[no-]recurse-submodules[=yes|on-demand|no]::
|
--[no-]recurse-submodules[=yes|on-demand|no]::
|
||||||
This option controls if new commits of populated submodules should
|
This option controls if new commits of all populated submodules should
|
||||||
be fetched, and if the working trees of active submodules should be
|
be fetched and updated, too (see linkgit:git-config[1] and
|
||||||
updated, too (see linkgit:git-fetch[1], linkgit:git-config[1] and
|
|
||||||
linkgit:gitmodules[5]).
|
linkgit:gitmodules[5]).
|
||||||
+
|
+
|
||||||
If the checkout is done via rebase, local submodule commits are rebased as well.
|
If the checkout is done via rebase, local submodule commits are rebased as well.
|
||||||
@ -134,6 +133,15 @@ unless you have read linkgit:git-rebase[1] carefully.
|
|||||||
--no-rebase::
|
--no-rebase::
|
||||||
Override earlier --rebase.
|
Override earlier --rebase.
|
||||||
|
|
||||||
|
--autostash::
|
||||||
|
--no-autostash::
|
||||||
|
Before starting rebase, stash local modifications away (see
|
||||||
|
linkgit:git-stash[1]) if needed, and apply the stash entry when
|
||||||
|
done. `--no-autostash` is useful to override the `rebase.autoStash`
|
||||||
|
configuration variable (see linkgit:git-config[1]).
|
||||||
|
+
|
||||||
|
This option is only valid when "--rebase" is used.
|
||||||
|
|
||||||
Options related to fetching
|
Options related to fetching
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
@ -221,9 +229,9 @@ branch.<name>.merge options; see linkgit:git-config[1] for details.
|
|||||||
$ git pull origin next
|
$ git pull origin next
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
+
|
+
|
||||||
This leaves a copy of `next` temporarily in FETCH_HEAD, and
|
This leaves a copy of `next` temporarily in FETCH_HEAD, but
|
||||||
updates the remote-tracking branch `origin/next`.
|
does not update any remote-tracking branches. Using remote-tracking
|
||||||
The same can be done by invoking fetch and merge:
|
branches, the same can be done by invoking fetch and merge:
|
||||||
+
|
+
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
$ git fetch origin
|
$ git fetch origin
|
||||||
|
@ -116,9 +116,9 @@ OPTIONS
|
|||||||
located in.
|
located in.
|
||||||
|
|
||||||
--[no-]recurse-submodules::
|
--[no-]recurse-submodules::
|
||||||
Using --recurse-submodules will update the content of all active
|
Using --recurse-submodules will update the content of all initialized
|
||||||
submodules according to the commit recorded in the superproject by
|
submodules according to the commit recorded in the superproject by
|
||||||
calling read-tree recursively, also setting the submodules' HEAD to be
|
calling read-tree recursively, also setting the submodules HEAD to be
|
||||||
detached at that commit.
|
detached at that commit.
|
||||||
|
|
||||||
--no-sparse-checkout::
|
--no-sparse-checkout::
|
||||||
|
@ -256,79 +256,18 @@ See also INCOMPATIBLE OPTIONS below.
|
|||||||
--quit::
|
--quit::
|
||||||
Abort the rebase operation but HEAD is not reset back to the
|
Abort the rebase operation but HEAD is not reset back to the
|
||||||
original branch. The index and working tree are also left
|
original branch. The index and working tree are also left
|
||||||
unchanged as a result. If a temporary stash entry was created
|
unchanged as a result.
|
||||||
using --autostash, it will be saved to the stash list.
|
|
||||||
|
|
||||||
--apply::
|
|
||||||
Use applying strategies to rebase (calling `git-am`
|
|
||||||
internally). This option may become a no-op in the future
|
|
||||||
once the merge backend handles everything the apply one does.
|
|
||||||
+
|
|
||||||
See also INCOMPATIBLE OPTIONS below.
|
|
||||||
|
|
||||||
--empty={drop,keep,ask}::
|
|
||||||
How to handle commits that are not empty to start and are not
|
|
||||||
clean cherry-picks of any upstream commit, but which become
|
|
||||||
empty after rebasing (because they contain a subset of already
|
|
||||||
upstream changes). With drop (the default), commits that
|
|
||||||
become empty are dropped. With keep, such commits are kept.
|
|
||||||
With ask (implied by --interactive), the rebase will halt when
|
|
||||||
an empty commit is applied allowing you to choose whether to
|
|
||||||
drop it, edit files more, or just commit the empty changes.
|
|
||||||
Other options, like --exec, will use the default of drop unless
|
|
||||||
-i/--interactive is explicitly specified.
|
|
||||||
+
|
|
||||||
Note that commits which start empty are kept (unless --no-keep-empty
|
|
||||||
is specified), and commits which are clean cherry-picks (as determined
|
|
||||||
by `git log --cherry-mark ...`) are detected and dropped as a
|
|
||||||
preliminary step (unless --reapply-cherry-picks is passed).
|
|
||||||
+
|
|
||||||
See also INCOMPATIBLE OPTIONS below.
|
|
||||||
|
|
||||||
--no-keep-empty::
|
|
||||||
--keep-empty::
|
--keep-empty::
|
||||||
Do not keep commits that start empty before the rebase
|
Keep the commits that do not change anything from its
|
||||||
(i.e. that do not change anything from its parent) in the
|
parents in the result.
|
||||||
result. The default is to keep commits which start empty,
|
|
||||||
since creating such commits requires passing the --allow-empty
|
|
||||||
override flag to `git commit`, signifying that a user is very
|
|
||||||
intentionally creating such a commit and thus wants to keep
|
|
||||||
it.
|
|
||||||
+
|
|
||||||
Usage of this flag will probably be rare, since you can get rid of
|
|
||||||
commits that start empty by just firing up an interactive rebase and
|
|
||||||
removing the lines corresponding to the commits you don't want. This
|
|
||||||
flag exists as a convenient shortcut, such as for cases where external
|
|
||||||
tools generate many empty commits and you want them all removed.
|
|
||||||
+
|
|
||||||
For commits which do not start empty but become empty after rebasing,
|
|
||||||
see the --empty flag.
|
|
||||||
+
|
|
||||||
See also INCOMPATIBLE OPTIONS below.
|
|
||||||
|
|
||||||
--reapply-cherry-picks::
|
|
||||||
--no-reapply-cherry-picks::
|
|
||||||
Reapply all clean cherry-picks of any upstream commit instead
|
|
||||||
of preemptively dropping them. (If these commits then become
|
|
||||||
empty after rebasing, because they contain a subset of already
|
|
||||||
upstream changes, the behavior towards them is controlled by
|
|
||||||
the `--empty` flag.)
|
|
||||||
+
|
|
||||||
By default (or if `--no-reapply-cherry-picks` is given), these commits
|
|
||||||
will be automatically dropped. Because this necessitates reading all
|
|
||||||
upstream commits, this can be expensive in repos with a large number
|
|
||||||
of upstream commits that need to be read.
|
|
||||||
+
|
|
||||||
`--reapply-cherry-picks` allows rebase to forgo reading all upstream
|
|
||||||
commits, potentially improving performance.
|
|
||||||
+
|
+
|
||||||
See also INCOMPATIBLE OPTIONS below.
|
See also INCOMPATIBLE OPTIONS below.
|
||||||
|
|
||||||
--allow-empty-message::
|
--allow-empty-message::
|
||||||
No-op. Rebasing commits with an empty message used to fail
|
By default, rebasing commits with an empty message will fail.
|
||||||
and this option would override that behavior, allowing commits
|
This option overrides that behavior, allowing commits with empty
|
||||||
with empty messages to be rebased. Now commits with an empty
|
messages to be rebased.
|
||||||
message do not cause rebasing to halt.
|
|
||||||
+
|
+
|
||||||
See also INCOMPATIBLE OPTIONS below.
|
See also INCOMPATIBLE OPTIONS below.
|
||||||
|
|
||||||
@ -347,7 +286,7 @@ See also INCOMPATIBLE OPTIONS below.
|
|||||||
--merge::
|
--merge::
|
||||||
Use merging strategies to rebase. When the recursive (default) merge
|
Use merging strategies to rebase. When the recursive (default) merge
|
||||||
strategy is used, this allows rebase to be aware of renames on the
|
strategy is used, this allows rebase to be aware of renames on the
|
||||||
upstream side. This is the default.
|
upstream side.
|
||||||
+
|
+
|
||||||
Note that a rebase merge works by replaying each commit from the working
|
Note that a rebase merge works by replaying each commit from the working
|
||||||
branch on top of the <upstream> branch. Because of this, when a merge
|
branch on top of the <upstream> branch. Because of this, when a merge
|
||||||
@ -386,12 +325,9 @@ See also INCOMPATIBLE OPTIONS below.
|
|||||||
|
|
||||||
-S[<keyid>]::
|
-S[<keyid>]::
|
||||||
--gpg-sign[=<keyid>]::
|
--gpg-sign[=<keyid>]::
|
||||||
--no-gpg-sign::
|
|
||||||
GPG-sign commits. The `keyid` argument is optional and
|
GPG-sign commits. The `keyid` argument is optional and
|
||||||
defaults to the committer identity; if specified, it must be
|
defaults to the committer identity; if specified, it must be
|
||||||
stuck to the option without a space. `--no-gpg-sign` is useful to
|
stuck to the option without a space.
|
||||||
countermand both `commit.gpgSign` configuration variable, and
|
|
||||||
earlier `--gpg-sign`.
|
|
||||||
|
|
||||||
-q::
|
-q::
|
||||||
--quiet::
|
--quiet::
|
||||||
@ -420,7 +356,7 @@ See also INCOMPATIBLE OPTIONS below.
|
|||||||
Ensure at least <n> lines of surrounding context match before
|
Ensure at least <n> lines of surrounding context match before
|
||||||
and after each change. When fewer lines of surrounding
|
and after each change. When fewer lines of surrounding
|
||||||
context exist they all must match. By default no context is
|
context exist they all must match. By default no context is
|
||||||
ever ignored. Implies --apply.
|
ever ignored.
|
||||||
+
|
+
|
||||||
See also INCOMPATIBLE OPTIONS below.
|
See also INCOMPATIBLE OPTIONS below.
|
||||||
|
|
||||||
@ -449,20 +385,17 @@ When --fork-point is active, 'fork_point' will be used instead of
|
|||||||
<branch>` command (see linkgit:git-merge-base[1]). If 'fork_point'
|
<branch>` command (see linkgit:git-merge-base[1]). If 'fork_point'
|
||||||
ends up being empty, the <upstream> will be used as a fallback.
|
ends up being empty, the <upstream> will be used as a fallback.
|
||||||
+
|
+
|
||||||
If <upstream> is given on the command line, then the default is
|
If either <upstream> or --root is given on the command line, then the
|
||||||
`--no-fork-point`, otherwise the default is `--fork-point`.
|
default is `--no-fork-point`, otherwise the default is `--fork-point`.
|
||||||
+
|
+
|
||||||
If your branch was based on <upstream> but <upstream> was rewound and
|
If your branch was based on <upstream> but <upstream> was rewound and
|
||||||
your branch contains commits which were dropped, this option can be used
|
your branch contains commits which were dropped, this option can be used
|
||||||
with `--keep-base` in order to drop those commits from your branch.
|
with `--keep-base` in order to drop those commits from your branch.
|
||||||
+
|
|
||||||
See also INCOMPATIBLE OPTIONS below.
|
|
||||||
|
|
||||||
--ignore-whitespace::
|
--ignore-whitespace::
|
||||||
--whitespace=<option>::
|
--whitespace=<option>::
|
||||||
These flags are passed to the 'git apply' program
|
These flag are passed to the 'git apply' program
|
||||||
(see linkgit:git-apply[1]) that applies the patch.
|
(see linkgit:git-apply[1]) that applies the patch.
|
||||||
Implies --apply.
|
|
||||||
+
|
+
|
||||||
See also INCOMPATIBLE OPTIONS below.
|
See also INCOMPATIBLE OPTIONS below.
|
||||||
|
|
||||||
@ -606,11 +539,10 @@ INCOMPATIBLE OPTIONS
|
|||||||
|
|
||||||
The following options:
|
The following options:
|
||||||
|
|
||||||
* --apply
|
|
||||||
* --committer-date-is-author-date
|
* --committer-date-is-author-date
|
||||||
* --ignore-date
|
* --ignore-date
|
||||||
* --ignore-whitespace
|
|
||||||
* --whitespace
|
* --whitespace
|
||||||
|
* --ignore-whitespace
|
||||||
* -C
|
* -C
|
||||||
|
|
||||||
are incompatible with the following options:
|
are incompatible with the following options:
|
||||||
@ -624,9 +556,7 @@ are incompatible with the following options:
|
|||||||
* --preserve-merges
|
* --preserve-merges
|
||||||
* --interactive
|
* --interactive
|
||||||
* --exec
|
* --exec
|
||||||
* --no-keep-empty
|
* --keep-empty
|
||||||
* --empty=
|
|
||||||
* --reapply-cherry-picks
|
|
||||||
* --edit-todo
|
* --edit-todo
|
||||||
* --root when used in combination with --onto
|
* --root when used in combination with --onto
|
||||||
|
|
||||||
@ -635,149 +565,33 @@ In addition, the following pairs of options are incompatible:
|
|||||||
* --preserve-merges and --interactive
|
* --preserve-merges and --interactive
|
||||||
* --preserve-merges and --signoff
|
* --preserve-merges and --signoff
|
||||||
* --preserve-merges and --rebase-merges
|
* --preserve-merges and --rebase-merges
|
||||||
* --preserve-merges and --empty=
|
|
||||||
* --keep-base and --onto
|
* --keep-base and --onto
|
||||||
* --keep-base and --root
|
* --keep-base and --root
|
||||||
* --fork-point and --root
|
|
||||||
|
|
||||||
BEHAVIORAL DIFFERENCES
|
BEHAVIORAL DIFFERENCES
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
git rebase has two primary backends: apply and merge. (The apply
|
There are some subtle differences how the backends behave.
|
||||||
backend used to be known as the 'am' backend, but the name led to
|
|
||||||
confusion as it looks like a verb instead of a noun. Also, the merge
|
|
||||||
backend used to be known as the interactive backend, but it is now
|
|
||||||
used for non-interactive cases as well. Both were renamed based on
|
|
||||||
lower-level functionality that underpinned each.) There are some
|
|
||||||
subtle differences in how these two backends behave:
|
|
||||||
|
|
||||||
Empty commits
|
Empty commits
|
||||||
~~~~~~~~~~~~~
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
The apply backend unfortunately drops intentionally empty commits, i.e.
|
The am backend drops any "empty" commits, regardless of whether the
|
||||||
commits that started empty, though these are rare in practice. It
|
commit started empty (had no changes relative to its parent to
|
||||||
also drops commits that become empty and has no option for controlling
|
start with) or ended empty (all changes were already applied
|
||||||
this behavior.
|
upstream in other commits).
|
||||||
|
|
||||||
The merge backend keeps intentionally empty commits by default (though
|
The interactive backend drops commits by default that
|
||||||
with -i they are marked as empty in the todo list editor, or they can
|
started empty and halts if it hits a commit that ended up empty.
|
||||||
be dropped automatically with --no-keep-empty).
|
The `--keep-empty` option exists for the interactive backend to allow
|
||||||
|
it to keep commits that started empty.
|
||||||
Similar to the apply backend, by default the merge backend drops
|
|
||||||
commits that become empty unless -i/--interactive is specified (in
|
|
||||||
which case it stops and asks the user what to do). The merge backend
|
|
||||||
also has an --empty={drop,keep,ask} option for changing the behavior
|
|
||||||
of handling commits that become empty.
|
|
||||||
|
|
||||||
Directory rename detection
|
Directory rename detection
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Due to the lack of accurate tree information (arising from
|
Directory rename heuristics are enabled in the merge and interactive
|
||||||
constructing fake ancestors with the limited information available in
|
backends. Due to the lack of accurate tree information, directory
|
||||||
patches), directory rename detection is disabled in the apply backend.
|
rename detection is disabled in the am backend.
|
||||||
Disabled directory rename detection means that if one side of history
|
|
||||||
renames a directory and the other adds new files to the old directory,
|
|
||||||
then the new files will be left behind in the old directory without
|
|
||||||
any warning at the time of rebasing that you may want to move these
|
|
||||||
files into the new directory.
|
|
||||||
|
|
||||||
Directory rename detection works with the merge backend to provide you
|
|
||||||
warnings in such cases.
|
|
||||||
|
|
||||||
Context
|
|
||||||
~~~~~~~
|
|
||||||
|
|
||||||
The apply backend works by creating a sequence of patches (by calling
|
|
||||||
`format-patch` internally), and then applying the patches in sequence
|
|
||||||
(calling `am` internally). Patches are composed of multiple hunks,
|
|
||||||
each with line numbers, a context region, and the actual changes. The
|
|
||||||
line numbers have to be taken with some fuzz, since the other side
|
|
||||||
will likely have inserted or deleted lines earlier in the file. The
|
|
||||||
context region is meant to help find how to adjust the line numbers in
|
|
||||||
order to apply the changes to the right lines. However, if multiple
|
|
||||||
areas of the code have the same surrounding lines of context, the
|
|
||||||
wrong one can be picked. There are real-world cases where this has
|
|
||||||
caused commits to be reapplied incorrectly with no conflicts reported.
|
|
||||||
Setting diff.context to a larger value may prevent such types of
|
|
||||||
problems, but increases the chance of spurious conflicts (since it
|
|
||||||
will require more lines of matching context to apply).
|
|
||||||
|
|
||||||
The merge backend works with a full copy of each relevant file,
|
|
||||||
insulating it from these types of problems.
|
|
||||||
|
|
||||||
Labelling of conflicts markers
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
When there are content conflicts, the merge machinery tries to
|
|
||||||
annotate each side's conflict markers with the commits where the
|
|
||||||
content came from. Since the apply backend drops the original
|
|
||||||
information about the rebased commits and their parents (and instead
|
|
||||||
generates new fake commits based off limited information in the
|
|
||||||
generated patches), those commits cannot be identified; instead it has
|
|
||||||
to fall back to a commit summary. Also, when merge.conflictStyle is
|
|
||||||
set to diff3, the apply backend will use "constructed merge base" to
|
|
||||||
label the content from the merge base, and thus provide no information
|
|
||||||
about the merge base commit whatsoever.
|
|
||||||
|
|
||||||
The merge backend works with the full commits on both sides of history
|
|
||||||
and thus has no such limitations.
|
|
||||||
|
|
||||||
Hooks
|
|
||||||
~~~~~
|
|
||||||
|
|
||||||
The apply backend has not traditionally called the post-commit hook,
|
|
||||||
while the merge backend has. Both have called the post-checkout hook,
|
|
||||||
though the merge backend has squelched its output. Further, both
|
|
||||||
backends only call the post-checkout hook with the starting point
|
|
||||||
commit of the rebase, not the intermediate commits nor the final
|
|
||||||
commit. In each case, the calling of these hooks was by accident of
|
|
||||||
implementation rather than by design (both backends were originally
|
|
||||||
implemented as shell scripts and happened to invoke other commands
|
|
||||||
like 'git checkout' or 'git commit' that would call the hooks). Both
|
|
||||||
backends should have the same behavior, though it is not entirely
|
|
||||||
clear which, if any, is correct. We will likely make rebase stop
|
|
||||||
calling either of these hooks in the future.
|
|
||||||
|
|
||||||
Interruptability
|
|
||||||
~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
The apply backend has safety problems with an ill-timed interrupt; if
|
|
||||||
the user presses Ctrl-C at the wrong time to try to abort the rebase,
|
|
||||||
the rebase can enter a state where it cannot be aborted with a
|
|
||||||
subsequent `git rebase --abort`. The merge backend does not appear to
|
|
||||||
suffer from the same shortcoming. (See
|
|
||||||
https://lore.kernel.org/git/20200207132152.GC2868@szeder.dev/ for
|
|
||||||
details.)
|
|
||||||
|
|
||||||
Commit Rewording
|
|
||||||
~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
When a conflict occurs while rebasing, rebase stops and asks the user
|
|
||||||
to resolve. Since the user may need to make notable changes while
|
|
||||||
resolving conflicts, after conflicts are resolved and the user has run
|
|
||||||
`git rebase --continue`, the rebase should open an editor and ask the
|
|
||||||
user to update the commit message. The merge backend does this, while
|
|
||||||
the apply backend blindly applies the original commit message.
|
|
||||||
|
|
||||||
Miscellaneous differences
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
There are a few more behavioral differences that most folks would
|
|
||||||
probably consider inconsequential but which are mentioned for
|
|
||||||
completeness:
|
|
||||||
|
|
||||||
* Reflog: The two backends will use different wording when describing
|
|
||||||
the changes made in the reflog, though both will make use of the
|
|
||||||
word "rebase".
|
|
||||||
|
|
||||||
* Progress, informational, and error messages: The two backends
|
|
||||||
provide slightly different progress and informational messages.
|
|
||||||
Also, the apply backend writes error messages (such as "Your files
|
|
||||||
would be overwritten...") to stdout, while the merge backend writes
|
|
||||||
them to stderr.
|
|
||||||
|
|
||||||
* State directories: The two backends keep their state in different
|
|
||||||
directories under .git/
|
|
||||||
|
|
||||||
include::merge-strategies.txt[]
|
include::merge-strategies.txt[]
|
||||||
|
|
||||||
@ -1052,8 +866,7 @@ Only works if the changes (patch IDs based on the diff contents) on
|
|||||||
'subsystem' did.
|
'subsystem' did.
|
||||||
|
|
||||||
In that case, the fix is easy because 'git rebase' knows to skip
|
In that case, the fix is easy because 'git rebase' knows to skip
|
||||||
changes that are already present in the new upstream (unless
|
changes that are already present in the new upstream. So if you say
|
||||||
`--reapply-cherry-picks` is given). So if you say
|
|
||||||
(assuming you're on 'topic')
|
(assuming you're on 'topic')
|
||||||
------------
|
------------
|
||||||
$ git rebase subsystem
|
$ git rebase subsystem
|
||||||
|
@ -87,12 +87,6 @@ but carries forward unmerged index entries.
|
|||||||
different between `<commit>` and `HEAD`.
|
different between `<commit>` and `HEAD`.
|
||||||
If a file that is different between `<commit>` and `HEAD` has local
|
If a file that is different between `<commit>` and `HEAD` has local
|
||||||
changes, reset is aborted.
|
changes, reset is aborted.
|
||||||
|
|
||||||
--[no-]recurse-submodules::
|
|
||||||
When the working tree is updated, using --recurse-submodules will
|
|
||||||
also recursively reset the working tree of all active submodules
|
|
||||||
according to the commit recorded in the superproject, also setting
|
|
||||||
the submodules' HEAD to be detached at that commit.
|
|
||||||
--
|
--
|
||||||
|
|
||||||
See "Reset, restore and revert" in linkgit:git[1] for the differences
|
See "Reset, restore and revert" in linkgit:git[1] for the differences
|
||||||
|
@ -22,8 +22,9 @@ The command can also be used to restore the content in the index with
|
|||||||
`--staged`, or restore both the working tree and the index with
|
`--staged`, or restore both the working tree and the index with
|
||||||
`--staged --worktree`.
|
`--staged --worktree`.
|
||||||
|
|
||||||
By default, if `--staged` is given, the contents are restored from `HEAD`,
|
By default, the restore sources for working tree and the index are the
|
||||||
otherwise from the index. Use `--source` to restore from a different commit.
|
index and `HEAD` respectively. `--source` could be used to specify a
|
||||||
|
commit as the restore source.
|
||||||
|
|
||||||
See "Reset, restore and revert" in linkgit:git[1] for the differences
|
See "Reset, restore and revert" in linkgit:git[1] for the differences
|
||||||
between the three commands.
|
between the three commands.
|
||||||
@ -38,8 +39,10 @@ OPTIONS
|
|||||||
tree. It is common to specify the source tree by naming a
|
tree. It is common to specify the source tree by naming a
|
||||||
commit, branch or tag associated with it.
|
commit, branch or tag associated with it.
|
||||||
+
|
+
|
||||||
If not specified, the contents are restored from `HEAD` if `--staged` is
|
If not specified, the default restore source for the working tree is
|
||||||
given, otherwise from the index.
|
the index, and the default restore source for the index is
|
||||||
|
`HEAD`. When both `--staged` and `--worktree` are specified,
|
||||||
|
`--source` must also be specified.
|
||||||
|
|
||||||
-p::
|
-p::
|
||||||
--patch::
|
--patch::
|
||||||
@ -104,17 +107,6 @@ in linkgit:git-checkout[1] for details.
|
|||||||
patterns and unconditionally restores any files in
|
patterns and unconditionally restores any files in
|
||||||
`<pathspec>`.
|
`<pathspec>`.
|
||||||
|
|
||||||
--recurse-submodules::
|
|
||||||
--no-recurse-submodules::
|
|
||||||
If `<pathspec>` names an active submodule and the restore location
|
|
||||||
includes the working tree, the submodule will only be updated if
|
|
||||||
this option is given, in which case its working tree will be
|
|
||||||
restored to the commit recorded in the superproject, and any local
|
|
||||||
modifications overwritten. If nothing (or
|
|
||||||
`--no-recurse-submodules`) is used, submodules working trees will
|
|
||||||
not be updated. Just like linkgit:git-checkout[1], this will detach
|
|
||||||
`HEAD` of the submodule.
|
|
||||||
|
|
||||||
--overlay::
|
--overlay::
|
||||||
--no-overlay::
|
--no-overlay::
|
||||||
In overlay mode, the command never removes files when
|
In overlay mode, the command never removes files when
|
||||||
|
@ -90,12 +90,9 @@ effect to your index in a row.
|
|||||||
|
|
||||||
-S[<keyid>]::
|
-S[<keyid>]::
|
||||||
--gpg-sign[=<keyid>]::
|
--gpg-sign[=<keyid>]::
|
||||||
--no-gpg-sign::
|
|
||||||
GPG-sign commits. The `keyid` argument is optional and
|
GPG-sign commits. The `keyid` argument is optional and
|
||||||
defaults to the committer identity; if specified, it must be
|
defaults to the committer identity; if specified, it must be
|
||||||
stuck to the option without a space. `--no-gpg-sign` is useful to
|
stuck to the option without a space.
|
||||||
countermand both `commit.gpgSign` configuration variable, and
|
|
||||||
earlier `--gpg-sign`.
|
|
||||||
|
|
||||||
-s::
|
-s::
|
||||||
--signoff::
|
--signoff::
|
||||||
|
@ -8,18 +8,16 @@ git-rm - Remove files from the working tree and from the index
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git rm' [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch]
|
'git rm' [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [--] <file>...
|
||||||
[--quiet] [--pathspec-from-file=<file> [--pathspec-file-nul]]
|
|
||||||
[--] [<pathspec>...]
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
Remove files matching pathspec from the index, or from the working tree
|
Remove files from the index, or from the working tree and the index.
|
||||||
and the index. `git rm` will not remove a file from just your working
|
`git rm` will not remove a file from just your working directory.
|
||||||
directory. (There is no option to remove a file only from the working
|
(There is no option to remove a file only from the working tree
|
||||||
tree and yet keep it in the index; use `/bin/rm` if you want to do
|
and yet keep it in the index; use `/bin/rm` if you want to do that.)
|
||||||
that.) The files being removed have to be identical to the tip of the
|
The files being removed have to be identical to the tip of the branch,
|
||||||
branch, and no updates to their contents can be staged in the index,
|
and no updates to their contents can be staged in the index,
|
||||||
though that default behavior can be overridden with the `-f` option.
|
though that default behavior can be overridden with the `-f` option.
|
||||||
When `--cached` is given, the staged content has to
|
When `--cached` is given, the staged content has to
|
||||||
match either the tip of the branch or the file on disk,
|
match either the tip of the branch or the file on disk,
|
||||||
@ -28,20 +26,15 @@ allowing the file to be removed from just the index.
|
|||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
<pathspec>...::
|
<file>...::
|
||||||
Files to remove. A leading directory name (e.g. `dir` to remove
|
Files to remove. Fileglobs (e.g. `*.c`) can be given to
|
||||||
`dir/file1` and `dir/file2`) can be given to remove all files in
|
remove all matching files. If you want Git to expand
|
||||||
the directory, and recursively all sub-directories, but this
|
file glob characters, you may need to shell-escape them.
|
||||||
requires the `-r` option to be explicitly given.
|
A leading directory name
|
||||||
+
|
(e.g. `dir` to remove `dir/file1` and `dir/file2`) can be
|
||||||
The command removes only the paths that are known to Git.
|
given to remove all files in the directory, and recursively
|
||||||
+
|
all sub-directories,
|
||||||
File globbing matches across directory boundaries. Thus, given two
|
but this requires the `-r` option to be explicitly given.
|
||||||
directories `d` and `d2`, there is a difference between using
|
|
||||||
`git rm 'd*'` and `git rm 'd/*'`, as the former will also remove all
|
|
||||||
of directory `d2`.
|
|
||||||
+
|
|
||||||
For more details, see the 'pathspec' entry in linkgit:gitglossary[7].
|
|
||||||
|
|
||||||
-f::
|
-f::
|
||||||
--force::
|
--force::
|
||||||
@ -75,19 +68,19 @@ For more details, see the 'pathspec' entry in linkgit:gitglossary[7].
|
|||||||
`git rm` normally outputs one line (in the form of an `rm` command)
|
`git rm` normally outputs one line (in the form of an `rm` command)
|
||||||
for each file removed. This option suppresses that output.
|
for each file removed. This option suppresses that output.
|
||||||
|
|
||||||
--pathspec-from-file=<file>::
|
|
||||||
Pathspec is passed in `<file>` instead of commandline args. If
|
|
||||||
`<file>` is exactly `-` then standard input is used. Pathspec
|
|
||||||
elements are separated by LF or CR/LF. Pathspec elements can be
|
|
||||||
quoted as explained for the configuration variable `core.quotePath`
|
|
||||||
(see linkgit:git-config[1]). See also `--pathspec-file-nul` and
|
|
||||||
global `--literal-pathspecs`.
|
|
||||||
|
|
||||||
--pathspec-file-nul::
|
DISCUSSION
|
||||||
Only meaningful with `--pathspec-from-file`. Pathspec elements are
|
----------
|
||||||
separated with NUL character and all other characters are taken
|
|
||||||
literally (including newlines and quotes).
|
|
||||||
|
|
||||||
|
The <file> list given to the command can be exact pathnames,
|
||||||
|
file glob patterns, or leading directory names. The command
|
||||||
|
removes only the paths that are known to Git. Giving the name of
|
||||||
|
a file that you have not told Git about does not remove that file.
|
||||||
|
|
||||||
|
File globbing matches across directory boundaries. Thus, given
|
||||||
|
two directories `d` and `d2`, there is a difference between
|
||||||
|
using `git rm 'd*'` and `git rm 'd/*'`, as the former will
|
||||||
|
also remove all of directory `d2`.
|
||||||
|
|
||||||
REMOVING FILES THAT HAVE DISAPPEARED FROM THE FILESYSTEM
|
REMOVING FILES THAT HAVE DISAPPEARED FROM THE FILESYSTEM
|
||||||
--------------------------------------------------------
|
--------------------------------------------------------
|
||||||
|
@ -9,7 +9,7 @@ git-show-index - Show packed archive index
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git show-index' [--object-format=<hash-algorithm>]
|
'git show-index'
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
@ -36,15 +36,6 @@ Note that you can get more information on a packfile by calling
|
|||||||
linkgit:git-verify-pack[1]. However, as this command considers only the
|
linkgit:git-verify-pack[1]. However, as this command considers only the
|
||||||
index file itself, it's both faster and more flexible.
|
index file itself, it's both faster and more flexible.
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-------
|
|
||||||
|
|
||||||
--object-format=<hash-algorithm>::
|
|
||||||
Specify the given object format (hash algorithm) for the index file. The
|
|
||||||
valid values are 'sha1' and (if enabled) 'sha256'. The default is the
|
|
||||||
algorithm for the current repository (set by `extensions.objectFormat`), or
|
|
||||||
'sha1' if no value is set or outside a repository..
|
|
||||||
|
|
||||||
GIT
|
GIT
|
||||||
---
|
---
|
||||||
Part of the linkgit:git[1] suite
|
Part of the linkgit:git[1] suite
|
||||||
|
@ -41,10 +41,6 @@ COMMANDS
|
|||||||
To avoid interfering with other worktrees, it first enables the
|
To avoid interfering with other worktrees, it first enables the
|
||||||
`extensions.worktreeConfig` setting and makes sure to set the
|
`extensions.worktreeConfig` setting and makes sure to set the
|
||||||
`core.sparseCheckout` setting in the worktree-specific config file.
|
`core.sparseCheckout` setting in the worktree-specific config file.
|
||||||
+
|
|
||||||
When `--cone` is provided, the `core.sparseCheckoutCone` setting is
|
|
||||||
also set, allowing for better performance with a limited set of
|
|
||||||
patterns (see 'CONE PATTERN SET' below).
|
|
||||||
|
|
||||||
'set'::
|
'set'::
|
||||||
Write a set of patterns to the sparse-checkout file, as given as
|
Write a set of patterns to the sparse-checkout file, as given as
|
||||||
@ -54,31 +50,6 @@ patterns (see 'CONE PATTERN SET' below).
|
|||||||
+
|
+
|
||||||
When the `--stdin` option is provided, the patterns are read from
|
When the `--stdin` option is provided, the patterns are read from
|
||||||
standard in as a newline-delimited list instead of from the arguments.
|
standard in as a newline-delimited list instead of from the arguments.
|
||||||
+
|
|
||||||
When `core.sparseCheckoutCone` is enabled, the input list is considered a
|
|
||||||
list of directories instead of sparse-checkout patterns. The command writes
|
|
||||||
patterns to the sparse-checkout file to include all files contained in those
|
|
||||||
directories (recursively) as well as files that are siblings of ancestor
|
|
||||||
directories. The input format matches the output of `git ls-tree --name-only`.
|
|
||||||
This includes interpreting pathnames that begin with a double quote (") as
|
|
||||||
C-style quoted strings.
|
|
||||||
|
|
||||||
'add'::
|
|
||||||
Update the sparse-checkout file to include additional patterns.
|
|
||||||
By default, these patterns are read from the command-line arguments,
|
|
||||||
but they can be read from stdin using the `--stdin` option. When
|
|
||||||
`core.sparseCheckoutCone` is enabled, the given patterns are interpreted
|
|
||||||
as directory names as in the 'set' subcommand.
|
|
||||||
|
|
||||||
'reapply'::
|
|
||||||
Reapply the sparsity pattern rules to paths in the working tree.
|
|
||||||
Commands like merge or rebase can materialize paths to do their
|
|
||||||
work (e.g. in order to show you a conflict), and other
|
|
||||||
sparse-checkout commands might fail to sparsify an individual file
|
|
||||||
(e.g. because it has unstaged changes or conflicts). In such
|
|
||||||
cases, it can make sense to run `git sparse-checkout reapply` later
|
|
||||||
after cleaning up affected paths (e.g. resolving conflicts, undoing
|
|
||||||
or committing changes, etc.).
|
|
||||||
|
|
||||||
'disable'::
|
'disable'::
|
||||||
Disable the `core.sparseCheckout` config setting, and restore the
|
Disable the `core.sparseCheckout` config setting, and restore the
|
||||||
@ -135,7 +106,7 @@ The full pattern set allows for arbitrary pattern matches and complicated
|
|||||||
inclusion/exclusion rules. These can result in O(N*M) pattern matches when
|
inclusion/exclusion rules. These can result in O(N*M) pattern matches when
|
||||||
updating the index, where N is the number of patterns and M is the number
|
updating the index, where N is the number of patterns and M is the number
|
||||||
of paths in the index. To combat this performance issue, a more restricted
|
of paths in the index. To combat this performance issue, a more restricted
|
||||||
pattern set is allowed when `core.sparseCheckoutCone` is enabled.
|
pattern set is allowed when `core.spareCheckoutCone` is enabled.
|
||||||
|
|
||||||
The accepted patterns in the cone pattern set are:
|
The accepted patterns in the cone pattern set are:
|
||||||
|
|
||||||
@ -157,12 +128,9 @@ the following patterns:
|
|||||||
----------------
|
----------------
|
||||||
|
|
||||||
This says "include everything in root, but nothing two levels below root."
|
This says "include everything in root, but nothing two levels below root."
|
||||||
|
If we then add the folder `A/B/C` as a recursive pattern, the folders `A` and
|
||||||
When in cone mode, the `git sparse-checkout set` subcommand takes a list of
|
`A/B` are added as parent patterns. The resulting sparse-checkout file is
|
||||||
directories instead of a list of sparse-checkout patterns. In this mode,
|
now
|
||||||
the command `git sparse-checkout set A/B/C` sets the directory `A/B/C` as
|
|
||||||
a recursive pattern, the directories `A` and `A/B` are added as parent
|
|
||||||
patterns. The resulting sparse-checkout file is now
|
|
||||||
|
|
||||||
----------------
|
----------------
|
||||||
/*
|
/*
|
||||||
@ -200,32 +168,10 @@ directory.
|
|||||||
SUBMODULES
|
SUBMODULES
|
||||||
----------
|
----------
|
||||||
|
|
||||||
If your repository contains one or more submodules, then submodules
|
If your repository contains one or more submodules, then those submodules will
|
||||||
are populated based on interactions with the `git submodule` command.
|
appear based on which you initialized with the `git submodule` command. If
|
||||||
Specifically, `git submodule init -- <path>` will ensure the submodule
|
your sparse-checkout patterns exclude an initialized submodule, then that
|
||||||
at `<path>` is present, while `git submodule deinit [-f] -- <path>`
|
submodule will still appear in your working directory.
|
||||||
will remove the files for the submodule at `<path>` (including any
|
|
||||||
untracked files, uncommitted changes, and unpushed history). Similar
|
|
||||||
to how sparse-checkout removes files from the working tree but still
|
|
||||||
leaves entries in the index, deinitialized submodules are removed from
|
|
||||||
the working directory but still have an entry in the index.
|
|
||||||
|
|
||||||
Since submodules may have unpushed changes or untracked files,
|
|
||||||
removing them could result in data loss. Thus, changing sparse
|
|
||||||
inclusion/exclusion rules will not cause an already checked out
|
|
||||||
submodule to be removed from the working copy. Said another way, just
|
|
||||||
as `checkout` will not cause submodules to be automatically removed or
|
|
||||||
initialized even when switching between branches that remove or add
|
|
||||||
submodules, using `sparse-checkout` to reduce or expand the scope of
|
|
||||||
"interesting" files will not cause submodules to be automatically
|
|
||||||
deinitialized or initialized either.
|
|
||||||
|
|
||||||
Further, the above facts mean that there are multiple reasons that
|
|
||||||
"tracked" files might not be present in the working copy: sparsity
|
|
||||||
pattern application from sparse-checkout, and submodule initialization
|
|
||||||
state. Thus, commands like `git grep` that work on tracked files in
|
|
||||||
the working copy may return results that are limited by either or both
|
|
||||||
of these restrictions.
|
|
||||||
|
|
||||||
|
|
||||||
SEE ALSO
|
SEE ALSO
|
||||||
|
@ -15,7 +15,6 @@ SYNOPSIS
|
|||||||
'git stash' branch <branchname> [<stash>]
|
'git stash' branch <branchname> [<stash>]
|
||||||
'git stash' [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
|
'git stash' [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
|
||||||
[-u|--include-untracked] [-a|--all] [-m|--message <message>]
|
[-u|--include-untracked] [-a|--all] [-m|--message <message>]
|
||||||
[--pathspec-from-file=<file> [--pathspec-file-nul]]
|
|
||||||
[--] [<pathspec>...]]
|
[--] [<pathspec>...]]
|
||||||
'git stash' clear
|
'git stash' clear
|
||||||
'git stash' create [<message>]
|
'git stash' create [<message>]
|
||||||
@ -44,10 +43,10 @@ created stash, `stash@{1}` is the one before it, `stash@{2.hours.ago}`
|
|||||||
is also possible). Stashes may also be referenced by specifying just the
|
is also possible). Stashes may also be referenced by specifying just the
|
||||||
stash index (e.g. the integer `n` is equivalent to `stash@{n}`).
|
stash index (e.g. the integer `n` is equivalent to `stash@{n}`).
|
||||||
|
|
||||||
COMMANDS
|
OPTIONS
|
||||||
--------
|
-------
|
||||||
|
|
||||||
push [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [-m|--message <message>] [--pathspec-from-file=<file> [--pathspec-file-nul]] [--] [<pathspec>...]::
|
push [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [-m|--message <message>] [--] [<pathspec>...]::
|
||||||
|
|
||||||
Save your local modifications to a new 'stash entry' and roll them
|
Save your local modifications to a new 'stash entry' and roll them
|
||||||
back to HEAD (in the working tree and in the index).
|
back to HEAD (in the working tree and in the index).
|
||||||
@ -57,13 +56,38 @@ push [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q
|
|||||||
For quickly making a snapshot, you can omit "push". In this mode,
|
For quickly making a snapshot, you can omit "push". In this mode,
|
||||||
non-option arguments are not allowed to prevent a misspelled
|
non-option arguments are not allowed to prevent a misspelled
|
||||||
subcommand from making an unwanted stash entry. The two exceptions to this
|
subcommand from making an unwanted stash entry. The two exceptions to this
|
||||||
are `stash -p` which acts as alias for `stash push -p` and pathspec elements,
|
are `stash -p` which acts as alias for `stash push -p` and pathspecs,
|
||||||
which are allowed after a double hyphen `--` for disambiguation.
|
which are allowed after a double hyphen `--` for disambiguation.
|
||||||
|
+
|
||||||
|
When pathspec is given to 'git stash push', the new stash entry records the
|
||||||
|
modified states only for the files that match the pathspec. The index
|
||||||
|
entries and working tree files are then rolled back to the state in
|
||||||
|
HEAD only for these files, too, leaving files that do not match the
|
||||||
|
pathspec intact.
|
||||||
|
+
|
||||||
|
If the `--keep-index` option is used, all changes already added to the
|
||||||
|
index are left intact.
|
||||||
|
+
|
||||||
|
If the `--include-untracked` option is used, all untracked files are also
|
||||||
|
stashed and then cleaned up with `git clean`, leaving the working directory
|
||||||
|
in a very clean state. If the `--all` option is used instead then the
|
||||||
|
ignored files are stashed and cleaned in addition to the untracked files.
|
||||||
|
+
|
||||||
|
With `--patch`, you can interactively select hunks from the diff
|
||||||
|
between HEAD and the working tree to be stashed. The stash entry is
|
||||||
|
constructed such that its index state is the same as the index state
|
||||||
|
of your repository, and its worktree contains only the changes you
|
||||||
|
selected interactively. The selected changes are then rolled back
|
||||||
|
from your worktree. See the ``Interactive Mode'' section of
|
||||||
|
linkgit:git-add[1] to learn how to operate the `--patch` mode.
|
||||||
|
+
|
||||||
|
The `--patch` option implies `--keep-index`. You can use
|
||||||
|
`--no-keep-index` to override this.
|
||||||
|
|
||||||
save [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [<message>]::
|
save [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [<message>]::
|
||||||
|
|
||||||
This option is deprecated in favour of 'git stash push'. It
|
This option is deprecated in favour of 'git stash push'. It
|
||||||
differs from "stash push" in that it cannot take pathspec.
|
differs from "stash push" in that it cannot take pathspecs.
|
||||||
Instead, all non-option arguments are concatenated to form the stash
|
Instead, all non-option arguments are concatenated to form the stash
|
||||||
message.
|
message.
|
||||||
|
|
||||||
@ -87,7 +111,7 @@ show [<options>] [<stash>]::
|
|||||||
|
|
||||||
Show the changes recorded in the stash entry as a diff between the
|
Show the changes recorded in the stash entry as a diff between the
|
||||||
stashed contents and the commit back when the stash entry was first
|
stashed contents and the commit back when the stash entry was first
|
||||||
created.
|
created. When no `<stash>` is given, it shows the latest one.
|
||||||
By default, the command shows the diffstat, but it will accept any
|
By default, the command shows the diffstat, but it will accept any
|
||||||
format known to 'git diff' (e.g., `git stash show -p stash@{1}`
|
format known to 'git diff' (e.g., `git stash show -p stash@{1}`
|
||||||
to view the second most recent entry in patch form).
|
to view the second most recent entry in patch form).
|
||||||
@ -104,6 +128,14 @@ pop [--index] [-q|--quiet] [<stash>]::
|
|||||||
Applying the state can fail with conflicts; in this case, it is not
|
Applying the state can fail with conflicts; in this case, it is not
|
||||||
removed from the stash list. You need to resolve the conflicts by hand
|
removed from the stash list. You need to resolve the conflicts by hand
|
||||||
and call `git stash drop` manually afterwards.
|
and call `git stash drop` manually afterwards.
|
||||||
|
+
|
||||||
|
If the `--index` option is used, then tries to reinstate not only the working
|
||||||
|
tree's changes, but also the index's ones. However, this can fail, when you
|
||||||
|
have conflicts (which are stored in the index, where you therefore can no
|
||||||
|
longer apply the changes as they were originally).
|
||||||
|
+
|
||||||
|
When no `<stash>` is given, `stash@{0}` is assumed, otherwise `<stash>` must
|
||||||
|
be a reference of the form `stash@{<revision>}`.
|
||||||
|
|
||||||
apply [--index] [-q|--quiet] [<stash>]::
|
apply [--index] [-q|--quiet] [<stash>]::
|
||||||
|
|
||||||
@ -117,7 +149,8 @@ branch <branchname> [<stash>]::
|
|||||||
the commit at which the `<stash>` was originally created, applies the
|
the commit at which the `<stash>` was originally created, applies the
|
||||||
changes recorded in `<stash>` to the new working tree and index.
|
changes recorded in `<stash>` to the new working tree and index.
|
||||||
If that succeeds, and `<stash>` is a reference of the form
|
If that succeeds, and `<stash>` is a reference of the form
|
||||||
`stash@{<revision>}`, it then drops the `<stash>`.
|
`stash@{<revision>}`, it then drops the `<stash>`. When no `<stash>`
|
||||||
|
is given, applies the latest one.
|
||||||
+
|
+
|
||||||
This is useful if the branch on which you ran `git stash push` has
|
This is useful if the branch on which you ran `git stash push` has
|
||||||
changed enough that `git stash apply` fails due to conflicts. Since
|
changed enough that `git stash apply` fails due to conflicts. Since
|
||||||
@ -133,6 +166,9 @@ clear::
|
|||||||
drop [-q|--quiet] [<stash>]::
|
drop [-q|--quiet] [<stash>]::
|
||||||
|
|
||||||
Remove a single stash entry from the list of stash entries.
|
Remove a single stash entry from the list of stash entries.
|
||||||
|
When no `<stash>` is given, it removes the latest one.
|
||||||
|
i.e. `stash@{0}`, otherwise `<stash>` must be a valid stash
|
||||||
|
log reference of the form `stash@{<revision>}`.
|
||||||
|
|
||||||
create::
|
create::
|
||||||
|
|
||||||
@ -149,98 +185,6 @@ store::
|
|||||||
reflog. This is intended to be useful for scripts. It is
|
reflog. This is intended to be useful for scripts. It is
|
||||||
probably not the command you want to use; see "push" above.
|
probably not the command you want to use; see "push" above.
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-------
|
|
||||||
-a::
|
|
||||||
--all::
|
|
||||||
This option is only valid for `push` and `save` commands.
|
|
||||||
+
|
|
||||||
All ignored and untracked files are also stashed and then cleaned
|
|
||||||
up with `git clean`.
|
|
||||||
|
|
||||||
-u::
|
|
||||||
--include-untracked::
|
|
||||||
This option is only valid for `push` and `save` commands.
|
|
||||||
+
|
|
||||||
All untracked files are also stashed and then cleaned up with
|
|
||||||
`git clean`.
|
|
||||||
|
|
||||||
--index::
|
|
||||||
This option is only valid for `pop` and `apply` commands.
|
|
||||||
+
|
|
||||||
Tries to reinstate not only the working tree's changes, but also
|
|
||||||
the index's ones. However, this can fail, when you have conflicts
|
|
||||||
(which are stored in the index, where you therefore can no longer
|
|
||||||
apply the changes as they were originally).
|
|
||||||
|
|
||||||
-k::
|
|
||||||
--keep-index::
|
|
||||||
--no-keep-index::
|
|
||||||
This option is only valid for `push` and `save` commands.
|
|
||||||
+
|
|
||||||
All changes already added to the index are left intact.
|
|
||||||
|
|
||||||
-p::
|
|
||||||
--patch::
|
|
||||||
This option is only valid for `push` and `save` commands.
|
|
||||||
+
|
|
||||||
Interactively select hunks from the diff between HEAD and the
|
|
||||||
working tree to be stashed. The stash entry is constructed such
|
|
||||||
that its index state is the same as the index state of your
|
|
||||||
repository, and its worktree contains only the changes you selected
|
|
||||||
interactively. The selected changes are then rolled back from your
|
|
||||||
worktree. See the ``Interactive Mode'' section of linkgit:git-add[1]
|
|
||||||
to learn how to operate the `--patch` mode.
|
|
||||||
+
|
|
||||||
The `--patch` option implies `--keep-index`. You can use
|
|
||||||
`--no-keep-index` to override this.
|
|
||||||
|
|
||||||
--pathspec-from-file=<file>::
|
|
||||||
This option is only valid for `push` command.
|
|
||||||
+
|
|
||||||
Pathspec is passed in `<file>` instead of commandline args. If
|
|
||||||
`<file>` is exactly `-` then standard input is used. Pathspec
|
|
||||||
elements are separated by LF or CR/LF. Pathspec elements can be
|
|
||||||
quoted as explained for the configuration variable `core.quotePath`
|
|
||||||
(see linkgit:git-config[1]). See also `--pathspec-file-nul` and
|
|
||||||
global `--literal-pathspecs`.
|
|
||||||
|
|
||||||
--pathspec-file-nul::
|
|
||||||
This option is only valid for `push` command.
|
|
||||||
+
|
|
||||||
Only meaningful with `--pathspec-from-file`. Pathspec elements are
|
|
||||||
separated with NUL character and all other characters are taken
|
|
||||||
literally (including newlines and quotes).
|
|
||||||
|
|
||||||
-q::
|
|
||||||
--quiet::
|
|
||||||
This option is only valid for `apply`, `drop`, `pop`, `push`,
|
|
||||||
`save`, `store` commands.
|
|
||||||
+
|
|
||||||
Quiet, suppress feedback messages.
|
|
||||||
|
|
||||||
\--::
|
|
||||||
This option is only valid for `push` command.
|
|
||||||
+
|
|
||||||
Separates pathspec from options for disambiguation purposes.
|
|
||||||
|
|
||||||
<pathspec>...::
|
|
||||||
This option is only valid for `push` command.
|
|
||||||
+
|
|
||||||
The new stash entry records the modified states only for the files
|
|
||||||
that match the pathspec. The index entries and working tree files
|
|
||||||
are then rolled back to the state in HEAD only for these files,
|
|
||||||
too, leaving files that do not match the pathspec intact.
|
|
||||||
+
|
|
||||||
For more details, see the 'pathspec' entry in linkgit:gitglossary[7].
|
|
||||||
|
|
||||||
<stash>::
|
|
||||||
This option is only valid for `apply`, `branch`, `drop`, `pop`,
|
|
||||||
`show` commands.
|
|
||||||
+
|
|
||||||
A reference of the form `stash@{<revision>}`. When no `<stash>` is
|
|
||||||
given, the latest stash is assumed (that is, `stash@{0}`).
|
|
||||||
|
|
||||||
DISCUSSION
|
DISCUSSION
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ If you really want to remove a submodule from the repository and commit
|
|||||||
that use linkgit:git-rm[1] instead. See linkgit:gitsubmodules[7] for removal
|
that use linkgit:git-rm[1] instead. See linkgit:gitsubmodules[7] for removal
|
||||||
options.
|
options.
|
||||||
|
|
||||||
update [--init] [--remote] [-N|--no-fetch] [--[no-]recommend-shallow] [-f|--force] [--checkout|--rebase|--merge] [--reference <repository>] [--depth <depth>] [--recursive] [--jobs <n>] [--[no-]single-branch] [--] [<path>...]::
|
update [--init] [--remote] [-N|--no-fetch] [--[no-]recommend-shallow] [-f|--force] [--checkout|--rebase|--merge] [--reference <repository>] [--depth <depth>] [--recursive] [--jobs <n>] [--] [<path>...]::
|
||||||
+
|
+
|
||||||
--
|
--
|
||||||
Update the registered submodules to match what the superproject
|
Update the registered submodules to match what the superproject
|
||||||
@ -183,7 +183,7 @@ set-branch (-d|--default) [--] <path>::
|
|||||||
Sets the default remote tracking branch for the submodule. The
|
Sets the default remote tracking branch for the submodule. The
|
||||||
`--branch` option allows the remote branch to be specified. The
|
`--branch` option allows the remote branch to be specified. The
|
||||||
`--default` option removes the submodule.<name>.branch configuration
|
`--default` option removes the submodule.<name>.branch configuration
|
||||||
key, which causes the tracking branch to default to the remote 'HEAD'.
|
key, which causes the tracking branch to default to 'master'.
|
||||||
|
|
||||||
set-url [--] <path> <newurl>::
|
set-url [--] <path> <newurl>::
|
||||||
Sets the URL of the specified submodule to <newurl>. Then, it will
|
Sets the URL of the specified submodule to <newurl>. Then, it will
|
||||||
@ -284,7 +284,7 @@ OPTIONS
|
|||||||
`.gitmodules` for `update --remote`. A special value of `.` is used to
|
`.gitmodules` for `update --remote`. A special value of `.` is used to
|
||||||
indicate that the name of the branch in the submodule should be the
|
indicate that the name of the branch in the submodule should be the
|
||||||
same name as the current branch in the current repository. If the
|
same name as the current branch in the current repository. If the
|
||||||
option is not specified, it defaults to the remote 'HEAD'.
|
option is not specified, it defaults to 'master'.
|
||||||
|
|
||||||
-f::
|
-f::
|
||||||
--force::
|
--force::
|
||||||
@ -322,10 +322,10 @@ OPTIONS
|
|||||||
the superproject's recorded SHA-1 to update the submodule, use the
|
the superproject's recorded SHA-1 to update the submodule, use the
|
||||||
status of the submodule's remote-tracking branch. The remote used
|
status of the submodule's remote-tracking branch. The remote used
|
||||||
is branch's remote (`branch.<name>.remote`), defaulting to `origin`.
|
is branch's remote (`branch.<name>.remote`), defaulting to `origin`.
|
||||||
The remote branch used defaults to the remote `HEAD`, but the branch
|
The remote branch used defaults to `master`, but the branch name may
|
||||||
name may be overridden by setting the `submodule.<name>.branch`
|
be overridden by setting the `submodule.<name>.branch` option in
|
||||||
option in either `.gitmodules` or `.git/config` (with `.git/config`
|
either `.gitmodules` or `.git/config` (with `.git/config` taking
|
||||||
taking precedence).
|
precedence).
|
||||||
+
|
+
|
||||||
This works for any of the supported update procedures (`--checkout`,
|
This works for any of the supported update procedures (`--checkout`,
|
||||||
`--rebase`, etc.). The only change is the source of the target SHA-1.
|
`--rebase`, etc.). The only change is the source of the target SHA-1.
|
||||||
@ -430,10 +430,6 @@ options carefully.
|
|||||||
Clone new submodules in parallel with as many jobs.
|
Clone new submodules in parallel with as many jobs.
|
||||||
Defaults to the `submodule.fetchJobs` option.
|
Defaults to the `submodule.fetchJobs` option.
|
||||||
|
|
||||||
--[no-]single-branch::
|
|
||||||
This option is only valid for the update command.
|
|
||||||
Clone only one branch during update: HEAD or one specified by --branch.
|
|
||||||
|
|
||||||
<path>...::
|
<path>...::
|
||||||
Paths to submodule(s). When specified this will restrict the command
|
Paths to submodule(s). When specified this will restrict the command
|
||||||
to only operate on the submodules found at the specified paths.
|
to only operate on the submodules found at the specified paths.
|
||||||
|
@ -181,9 +181,9 @@ name, the guessing is aborted. You can explicitly give a name with
|
|||||||
--recurse-submodules::
|
--recurse-submodules::
|
||||||
--no-recurse-submodules::
|
--no-recurse-submodules::
|
||||||
Using `--recurse-submodules` will update the content of all
|
Using `--recurse-submodules` will update the content of all
|
||||||
active submodules according to the commit recorded in the
|
initialized submodules according to the commit recorded in the
|
||||||
superproject. If nothing (or `--no-recurse-submodules`) is
|
superproject. If nothing (or `--no-recurse-submodules`) is
|
||||||
used, submodules working trees will not be updated. Just
|
used, the work trees of submodules will not be updated. Just
|
||||||
like linkgit:git-submodule[1], this will detach `HEAD` of the
|
like linkgit:git-submodule[1], this will detach `HEAD` of the
|
||||||
submodules.
|
submodules.
|
||||||
|
|
||||||
|
@ -66,10 +66,6 @@ performs all modifications together. Specify commands of the form:
|
|||||||
delete SP <ref> [SP <oldvalue>] LF
|
delete SP <ref> [SP <oldvalue>] LF
|
||||||
verify SP <ref> [SP <oldvalue>] LF
|
verify SP <ref> [SP <oldvalue>] LF
|
||||||
option SP <opt> LF
|
option SP <opt> LF
|
||||||
start LF
|
|
||||||
prepare LF
|
|
||||||
commit LF
|
|
||||||
abort LF
|
|
||||||
|
|
||||||
With `--create-reflog`, update-ref will create a reflog for each ref
|
With `--create-reflog`, update-ref will create a reflog for each ref
|
||||||
even if one would not ordinarily be created.
|
even if one would not ordinarily be created.
|
||||||
@ -87,10 +83,6 @@ quoting:
|
|||||||
delete SP <ref> NUL [<oldvalue>] NUL
|
delete SP <ref> NUL [<oldvalue>] NUL
|
||||||
verify SP <ref> NUL [<oldvalue>] NUL
|
verify SP <ref> NUL [<oldvalue>] NUL
|
||||||
option SP <opt> NUL
|
option SP <opt> NUL
|
||||||
start NUL
|
|
||||||
prepare NUL
|
|
||||||
commit NUL
|
|
||||||
abort NUL
|
|
||||||
|
|
||||||
In this format, use 40 "0" to specify a zero value, and use the empty
|
In this format, use 40 "0" to specify a zero value, and use the empty
|
||||||
string to specify a missing value.
|
string to specify a missing value.
|
||||||
@ -115,31 +107,13 @@ delete::
|
|||||||
|
|
||||||
verify::
|
verify::
|
||||||
Verify <ref> against <oldvalue> but do not change it. If
|
Verify <ref> against <oldvalue> but do not change it. If
|
||||||
<oldvalue> is zero or missing, the ref must not exist.
|
<oldvalue> zero or missing, the ref must not exist.
|
||||||
|
|
||||||
option::
|
option::
|
||||||
Modify behavior of the next command naming a <ref>.
|
Modify behavior of the next command naming a <ref>.
|
||||||
The only valid option is `no-deref` to avoid dereferencing
|
The only valid option is `no-deref` to avoid dereferencing
|
||||||
a symbolic ref.
|
a symbolic ref.
|
||||||
|
|
||||||
start::
|
|
||||||
Start a transaction. In contrast to a non-transactional session, a
|
|
||||||
transaction will automatically abort if the session ends without an
|
|
||||||
explicit commit.
|
|
||||||
|
|
||||||
prepare::
|
|
||||||
Prepare to commit the transaction. This will create lock files for all
|
|
||||||
queued reference updates. If one reference could not be locked, the
|
|
||||||
transaction will be aborted.
|
|
||||||
|
|
||||||
commit::
|
|
||||||
Commit all reference updates queued for the transaction, ending the
|
|
||||||
transaction.
|
|
||||||
|
|
||||||
abort::
|
|
||||||
Abort the transaction, releasing all locks if the transaction is in
|
|
||||||
prepared state.
|
|
||||||
|
|
||||||
If all <ref>s can be locked with matching <oldvalue>s
|
If all <ref>s can be locked with matching <oldvalue>s
|
||||||
simultaneously, all modifications are performed. Otherwise, no
|
simultaneously, all modifications are performed. Otherwise, no
|
||||||
modifications are performed. Note that while each individual
|
modifications are performed. Note that while each individual
|
||||||
|
@ -126,9 +126,7 @@ OPTIONS
|
|||||||
locked working tree path, specify `--force` twice.
|
locked working tree path, specify `--force` twice.
|
||||||
+
|
+
|
||||||
`move` refuses to move a locked working tree unless `--force` is specified
|
`move` refuses to move a locked working tree unless `--force` is specified
|
||||||
twice. If the destination is already assigned to some other working tree but is
|
twice.
|
||||||
missing (for instance, if `<new-path>` was deleted manually), then `--force`
|
|
||||||
allows the move to proceed; use --force twice if the destination is locked.
|
|
||||||
+
|
+
|
||||||
`remove` refuses to remove an unclean working tree unless `--force` is used.
|
`remove` refuses to remove an unclean working tree unless `--force` is used.
|
||||||
To remove a locked working tree, specify `--force` twice.
|
To remove a locked working tree, specify `--force` twice.
|
||||||
|
@ -110,23 +110,9 @@ foo.bar= ...`) sets `foo.bar` to the empty string which `git config
|
|||||||
Do not pipe Git output into a pager.
|
Do not pipe Git output into a pager.
|
||||||
|
|
||||||
--git-dir=<path>::
|
--git-dir=<path>::
|
||||||
Set the path to the repository (".git" directory). This can also be
|
Set the path to the repository. This can also be controlled by
|
||||||
controlled by setting the `GIT_DIR` environment variable. It can be
|
setting the `GIT_DIR` environment variable. It can be an absolute
|
||||||
an absolute path or relative path to current working directory.
|
path or relative path to current working directory.
|
||||||
+
|
|
||||||
Specifying the location of the ".git" directory using this
|
|
||||||
option (or `GIT_DIR` environment variable) turns off the
|
|
||||||
repository discovery that tries to find a directory with
|
|
||||||
".git" subdirectory (which is how the repository and the
|
|
||||||
top-level of the working tree are discovered), and tells Git
|
|
||||||
that you are at the top level of the working tree. If you
|
|
||||||
are not at the top-level directory of the working tree, you
|
|
||||||
should tell Git where the top-level of the working tree is,
|
|
||||||
with the `--work-tree=<path>` option (or `GIT_WORK_TREE`
|
|
||||||
environment variable)
|
|
||||||
+
|
|
||||||
If you just want to run git as if it was started in `<path>` then use
|
|
||||||
`git -C <path>`.
|
|
||||||
|
|
||||||
--work-tree=<path>::
|
--work-tree=<path>::
|
||||||
Set the path to the working tree. It can be an absolute path
|
Set the path to the working tree. It can be an absolute path
|
||||||
@ -493,12 +479,6 @@ double-quotes and respecting backslash escapes. E.g., the value
|
|||||||
details. This variable has lower precedence than other path
|
details. This variable has lower precedence than other path
|
||||||
variables such as GIT_INDEX_FILE, GIT_OBJECT_DIRECTORY...
|
variables such as GIT_INDEX_FILE, GIT_OBJECT_DIRECTORY...
|
||||||
|
|
||||||
`GIT_DEFAULT_HASH`::
|
|
||||||
If this variable is set, the default hash algorithm for new
|
|
||||||
repositories will be set to this value. This value is currently
|
|
||||||
ignored when cloning; the setting of the remote repository
|
|
||||||
is used instead. The default is "sha1".
|
|
||||||
|
|
||||||
Git Commits
|
Git Commits
|
||||||
~~~~~~~~~~~
|
~~~~~~~~~~~
|
||||||
`GIT_AUTHOR_NAME`::
|
`GIT_AUTHOR_NAME`::
|
||||||
@ -721,6 +701,8 @@ of clones and fetches.
|
|||||||
Enables a curl full trace dump of all incoming and outgoing data,
|
Enables a curl full trace dump of all incoming and outgoing data,
|
||||||
including descriptive information, of the git transport protocol.
|
including descriptive information, of the git transport protocol.
|
||||||
This is similar to doing curl `--trace-ascii` on the command line.
|
This is similar to doing curl `--trace-ascii` on the command line.
|
||||||
|
This option overrides setting the `GIT_CURL_VERBOSE` environment
|
||||||
|
variable.
|
||||||
See `GIT_TRACE` for available trace output options.
|
See `GIT_TRACE` for available trace output options.
|
||||||
|
|
||||||
`GIT_TRACE_CURL_NO_DATA`::
|
`GIT_TRACE_CURL_NO_DATA`::
|
||||||
@ -775,10 +757,11 @@ for full details.
|
|||||||
See `GIT_TRACE2` for available trace output options and
|
See `GIT_TRACE2` for available trace output options and
|
||||||
link:technical/api-trace2.html[Trace2 documentation] for full details.
|
link:technical/api-trace2.html[Trace2 documentation] for full details.
|
||||||
|
|
||||||
`GIT_TRACE_REDACT`::
|
`GIT_REDACT_COOKIES`::
|
||||||
By default, when tracing is activated, Git redacts the values of
|
This can be set to a comma-separated list of strings. When a curl trace
|
||||||
cookies, the "Authorization:" header, and the "Proxy-Authorization:"
|
is enabled (see `GIT_TRACE_CURL` above), whenever a "Cookies:" header
|
||||||
header. Set this variable to `0` to prevent this redaction.
|
sent by the client is dumped, values of cookies whose key is in that
|
||||||
|
list (case-sensitive) are redacted.
|
||||||
|
|
||||||
`GIT_LITERAL_PATHSPECS`::
|
`GIT_LITERAL_PATHSPECS`::
|
||||||
Setting this variable to `1` will cause Git to treat all
|
Setting this variable to `1` will cause Git to treat all
|
||||||
|
@ -824,8 +824,6 @@ patterns are available:
|
|||||||
|
|
||||||
- `java` suitable for source code in the Java language.
|
- `java` suitable for source code in the Java language.
|
||||||
|
|
||||||
- `markdown` suitable for Markdown documents.
|
|
||||||
|
|
||||||
- `matlab` suitable for source code in the MATLAB and Octave languages.
|
- `matlab` suitable for source code in the MATLAB and Octave languages.
|
||||||
|
|
||||||
- `objc` suitable for source code in the Objective-C language.
|
- `objc` suitable for source code in the Objective-C language.
|
||||||
|
@ -131,9 +131,7 @@ context would not match:
|
|||||||
because the hostnames differ. Nor would it match `foo.example.com`; Git
|
because the hostnames differ. Nor would it match `foo.example.com`; Git
|
||||||
compares hostnames exactly, without considering whether two hosts are part of
|
compares hostnames exactly, without considering whether two hosts are part of
|
||||||
the same domain. Likewise, a config entry for `http://example.com` would not
|
the same domain. Likewise, a config entry for `http://example.com` would not
|
||||||
match: Git compares the protocols exactly. However, you may use wildcards in
|
match: Git compares the protocols exactly.
|
||||||
the domain name and other pattern matching techniques as with the `http.<url>.*`
|
|
||||||
options.
|
|
||||||
|
|
||||||
If the "pattern" URL does include a path component, then this too must match
|
If the "pattern" URL does include a path component, then this too must match
|
||||||
exactly: the context `https://example.com/bar/baz.git` will match a config
|
exactly: the context `https://example.com/bar/baz.git` will match a config
|
||||||
@ -216,26 +214,20 @@ Here are some example specifications:
|
|||||||
|
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
# run "git credential-foo"
|
# run "git credential-foo"
|
||||||
[credential]
|
foo
|
||||||
helper = foo
|
|
||||||
|
|
||||||
# same as above, but pass an argument to the helper
|
# same as above, but pass an argument to the helper
|
||||||
[credential]
|
foo --bar=baz
|
||||||
helper = "foo --bar=baz"
|
|
||||||
|
|
||||||
# the arguments are parsed by the shell, so use shell
|
# the arguments are parsed by the shell, so use shell
|
||||||
# quoting if necessary
|
# quoting if necessary
|
||||||
[credential]
|
foo --bar="whitespace arg"
|
||||||
helper = "foo --bar='whitespace arg'"
|
|
||||||
|
|
||||||
# you can also use an absolute path, which will not use the git wrapper
|
# you can also use an absolute path, which will not use the git wrapper
|
||||||
[credential]
|
/path/to/my/helper --with-arguments
|
||||||
helper = "/path/to/my/helper --with-arguments"
|
|
||||||
|
|
||||||
# or you can specify your own shell snippet
|
# or you can specify your own shell snippet
|
||||||
[credential "https://example.com"]
|
!f() { echo "password=`cat $HOME/.secret`"; }; f
|
||||||
username = your_user
|
|
||||||
helper = "!f() { test \"$1\" = get && echo \"password=$(cat $HOME/.secret)\"; }; f"
|
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
|
|
||||||
Generally speaking, rule (3) above is the simplest for users to specify.
|
Generally speaking, rule (3) above is the simplest for users to specify.
|
||||||
@ -268,26 +260,16 @@ For a `get` operation, the helper should produce a list of attributes on
|
|||||||
stdout in the same format (see linkgit:git-credential[1] for common
|
stdout in the same format (see linkgit:git-credential[1] for common
|
||||||
attributes). A helper is free to produce a subset, or even no values at
|
attributes). A helper is free to produce a subset, or even no values at
|
||||||
all if it has nothing useful to provide. Any provided attributes will
|
all if it has nothing useful to provide. Any provided attributes will
|
||||||
overwrite those already known about by Git's credential subsystem.
|
overwrite those already known about by Git. If a helper outputs a
|
||||||
|
`quit` attribute with a value of `true` or `1`, no further helpers will
|
||||||
While it is possible to override all attributes, well behaving helpers
|
be consulted, nor will the user be prompted (if no credential has been
|
||||||
should refrain from doing so for any attribute other than username and
|
provided, the operation will then fail).
|
||||||
password.
|
|
||||||
|
|
||||||
If a helper outputs a `quit` attribute with a value of `true` or `1`,
|
|
||||||
no further helpers will be consulted, nor will the user be prompted
|
|
||||||
(if no credential has been provided, the operation will then fail).
|
|
||||||
|
|
||||||
Similarly, no more helpers will be consulted once both username and
|
|
||||||
password had been provided.
|
|
||||||
|
|
||||||
For a `store` or `erase` operation, the helper's output is ignored.
|
For a `store` or `erase` operation, the helper's output is ignored.
|
||||||
|
If it fails to perform the requested operation, it may complain to
|
||||||
If a helper fails to perform the requested operation or needs to notify
|
stderr to inform the user. If it does not support the requested
|
||||||
the user of a potential issue, it may write to stderr.
|
operation (e.g., a read-only store), it should silently ignore the
|
||||||
|
request.
|
||||||
If it does not support the requested operation (e.g., a read-only store),
|
|
||||||
it should silently ignore the request.
|
|
||||||
|
|
||||||
If a helper receives any other operation, it should silently ignore the
|
If a helper receives any other operation, it should silently ignore the
|
||||||
request. This leaves room for future operations to be added (older
|
request. This leaves room for future operations to be added (older
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user